2017-01-13 3 views
0

.batファイルをコピーします。コピーは、元のファイルと同じパスにあり、名前として乱数を持つ必要があります。これは、これまでの私のアプローチです:ファイル名に変数を入れるにはどうしたらいいですか?

@echo 
pause 
SET nr = %RANDOM% 
xcopy "%cd%\*.bat" "%nr%.bat" /q /y 
pause 

最初の質問:どのように私がしなければならないん、プログラムの開発は、ドットの前の数字と.batファイルを作成すること? (.batというファイルがドットの前に何も書き込まれていないため)。

2番目の質問:ターゲットがファイルまたはディレクトリの場合、どうすればその質問を止めることができますか?値の先頭にスペースを%nr %の代わりに、%nr%

+1

(? '*' '')このような状況で働くことができますが、ちょうど – ludmuterol

+0

は、ワイルドカードを追加は...先の後に*を置く:だからここ

は、固定されたコードがありますソース名が部分的にコピーされる可能性があるため危険です。次のようにしてください: 'xcopy" file.batch "" new.bat * "'は 'new.batch'という名前のコピーを作成し、' xcopy "file.batch" "new.bat?" 'はnewという名前のコピーを作成します。バット '... – aschipfl

答えて

0

SPACEが先行する乱数にnrSPACEという変数を設定しますSET nr = %RANDOM%行は、あなたが実際に暫定変数nrを必要としないという事実に加えて、あなたはすぐに代わりRANDOMを使用することができます。

xcopyのファイル/ディレクトリプロンプトを回避するには、代わりにcopyコマンドを使用してください。これが/Qスイッチをサポートしていないと考えてください。代わりに、copyが何かを表示しないように> nulを使用することができます。

あなたはとにかく、そのディレクトリに%CD%はちょうど現在の作業ディレクトリを指すよう、%CD%\とソース*.batの前する必要がありますが、*.batだけではポイントはありません。

最後に、私は@echoと仮定します。実際には、コマンドエコーを抑制するには@echo offを意味します。

@echo off 
pause 
copy /Y "*.bat" "%RANDOM%.bat" > nul 
pause 
0

SET nr = %RANDOM%は、名前の末尾のスペースを持つ変数を作成します。

SET nr = %RANDOM% 
rem ↑ ↑   remove spaces 
rem     use following syntax instead 
SET "nr=%RANDOM%" 

あなたは

xcopy "%cd%\*.bat" "%random%.bat" /q /y 

を使用しますが、両方%nr%だけでなく、%random%が変化しないことに気づくことができました。次のコードスニペットは、

the %RANDOM% pseudovariable generates the same "random" number until the clock ticks over another second. (Notice also that the "random" numbers don't look all that random.)も同様RANDOM articleを読む、より良い

for /F "delims=" %%G in ('dir /b *.bat') do (
    SETLOCAL EnableDelayedExpansion 
    xcopy "%%~G" "!random!.bat" /q /y 
    ENDLOCAL 
) 

しかしでしょう。

関連する問題