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을 할 수있는, 슬립 명령을해야합니다.
다음 같은 것을 수행 할 수 있습니다
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
은 우리가 만들고 수정하는 모든 환경 변수가 배치 파일 자체의 범위에만 유지되도록합니다. 모든 정상 및 에러 출력 (>nul 2>&1
)를 버리는 상태 (제 핑 즉시되며 모든 후속 한 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를 사용할 수 있다고 가정합니다. 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
c:\test> cscript /nologo myscript.vbs