2009-07-10 7 views
2

私はファイルを25秒ごとに名前を変更する目的でWindowsバッチファイルを書きたいと思います。私はまた、バッチファイルが300秒が経過した後に終了するようにしたいと思います。これをどうやってやりますか?ここに私がそうしたものがあります。指定された間隔でファイルの名前を変更するためのWindowsバッチファイル

START 

RENAME test.g test.go 

SLEEP 25 

RENAME test.go test.g 

GOTO START 

答えて

1

あなたは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 
4

まあ、これはあまりにも難しいことではありません。

あなたはこのような何かを行うことができます。そこな(非標準のツールを統合する手間が省けます)スリープ状態に誤使用の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 

はちょうど倍の計算回数を繰り返します。

0

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 

関連する問題