私はファイルを25秒ごとに名前を変更する目的でWindowsバッチファイルを書きたいと思います。私はまた、バッチファイルが300秒が経過した後に終了するようにしたいと思います。これをどうやってやりますか?ここに私がそうしたものがあります。指定された間隔でファイルの名前を変更するためのWindowsバッチファイル
START
RENAME test.g test.go
SLEEP 25
RENAME test.go test.g
GOTO START
私はファイルを25秒ごとに名前を変更する目的でWindowsバッチファイルを書きたいと思います。私はまた、バッチファイルが300秒が経過した後に終了するようにしたいと思います。これをどうやってやりますか?ここに私がそうしたものがあります。指定された間隔でファイルの名前を変更するためのWindowsバッチファイル
START
RENAME test.g test.go
SLEEP 25
RENAME test.go test.g
GOTO START
あなたはdownload it hereのsleepコマンドが必要です。
echo this is a test > test.txt
SET x=
:START
CALL SET /a x = %x% +1
rename test.* test.%x%
CALL SET /a y = %x% * 25
IF '%x%' == '300' GOTO END
CALL SLEEP 25
GOTO START
:END
まあ、これはあまりにも難しいことではありません。
あなたはこのような何かを行うことができます。そこな(非標準のツールを統合する手間が省けます)スリープ状態に誤使用のpingなどのよく知られたバッチトリックの束があり、私たちは、次を思い付くことができます。
@echo off
setlocal
set n=0
:start
ren test.g test.go
ping localhost -n 26>nul 2>&1
ren test.go test.g
set /a n+=25
if %n% LSS 300 goto start
endlocal
setlocal
およびendlocal
は、作成および変更するすべての環境変数がバッチファイルそのものの範囲内にとどまることを保証します。全て正常とエラー出力(>nul 2>&1
)を捨てながら(最初のpingは即時になり、後続のすべての一方が1秒の遅延を招くため)コマンド
ping localhost -n 26 >nul 2>&1
は25秒間待機します。
最後に、%n%
変数で待機していた時間を把握しており、nがまだ300を下回っている場合に限り、ループを続けます。あなたにもかかわらず、forループでそれを行う可能性があります:最初に、それがループする必要がありますどのくらいの頻度を計算してます
@echo off
setlocal
set n=300
set /a k=n/25
for /l %%i in (1,1,%k%) do (
ren test.g test.go
ping localhost -n 26>nul 2>&1
ren test.go test.g
)
endlocal
はちょうど倍の計算回数を繰り返します。
Windowsを使用している場合は、vbscriptを使用できると仮定します。
c:\test> cscript /nologo myscript.vbs
myscript.vbs上記のように、コマンドライン上の保存
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile1 = "file.txt"
strFile2 = "new.txt"
While 1=1
Set objFile1 = objFS.GetFile(strFile1)
objFile1.Name = strFile2
Set objFile1 = Nothing
WScript.Echo "sleeping.."
WScript.Sleep (25 * 60)
Set objFile2 = objFS.GetFile(strFile2)
objFile2.Name = strFile1
Set objFile2 = Nothing
WScript.Sleep (300 * 60)
Wend