2009-07-10 71 views

回答

1

你需要睡眠命令,就可以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 
4

那麼,這是不是太困難。有一堆知名批技巧,如誤用平睡(從有到整合非標準的工具可以節省您的),然後我們就可以拿出如下:

@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 

setlocalendlocal將確保我們創建和修改的所有環境變量僅保留在批處理文件本身的範圍內。命令

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 

將首先計算這將是多麼經常需要循環,然後只是重複的次數來計算數量。

0

如果您使用的是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