我想編寫一個windows批處理文件,以便每隔25秒重命名文件。我還希望批處理文件在300秒後終止。我會如何去做這件事?這是我迄今爲止所做的。以指定的時間間隔重命名文件的Windows批處理文件
START
RENAME test.g test.go
SLEEP 25
RENAME test.go test.g
GOTO START
我想編寫一個windows批處理文件,以便每隔25秒重命名文件。我還希望批處理文件在300秒後終止。我會如何去做這件事?這是我迄今爲止所做的。以指定的時間間隔重命名文件的Windows批處理文件
START
RENAME test.g test.go
SLEEP 25
RENAME test.go test.g
GOTO START
你需要睡眠命令,就可以download it here。
那麼你可以做這樣的事情:
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
那麼,這是不是太困難。有一堆知名批技巧,如誤用平睡(從有到整合非標準的工具可以節省您的),然後我們就可以拿出如下:
@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
將確保我們創建和修改的所有環境變量僅保留在批處理文件本身的範圍內。命令
ping localhost -n 26 >nul 2>&1
將等待25秒(因爲第一平將是立即和以後每一個即被一第二延遲),而扔掉所有正常和錯誤輸出(>nul 2>&1
)。
最後,我們正在跟蹤我們在%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。
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
保存如上myscript.vbs和命令行
c:\test> cscript /nologo myscript.vbs