如果文件大小不再變化(完全處理),我想將文件從dir1移動到dir2。一個可能的參加者將問大小0(在0s)和大小10(在10s),並且如果size0 = size10,則將文件從dir1移動到dir2。使用批處理文件複製文件的Windows中的智能文件夾
如何在Windows XP的命令行中執行此操作?
如果文件大小不再變化(完全處理),我想將文件從dir1移動到dir2。一個可能的參加者將問大小0(在0s)和大小10(在10s),並且如果size0 = size10,則將文件從dir1移動到dir2。使用批處理文件複製文件的Windows中的智能文件夾
如何在Windows XP的命令行中執行此操作?
像這樣的東西可能會奏效:
@echo off
setlocal
set "file=C:\path\to\your.file"
set "destination=D:\some\folder"
:loop
call :GetSize "%file%" s1
call :Sleep 10
call :GetSize "%file%" s2
if %s1% neq %s2% goto loop
call :MoveUnlessExists "%file%"
goto :eof
:GetSize
set "%~2=%~z1"
goto :eof
:Sleep
set /a "n=%1+1"
ping -n %n% 127.0.0.1 >nul
goto :eof
:MoveUnlessExists
if not exist "%destination%\%~nx1" move "%~f1" "%destination%\"
goto :eof
謝謝!這很好。 ping步驟僅用於掛起,所以我還可以使用其他的東西來暫停? –
@Denis是的。如果你有一個實際的'sleep'命令,你可以刪除整個':Sleep''子例程「。 –
太好了,謝謝。還有一個問題:如果我只想將dir1中的文件複製到dir2中尚未包含在dir2中的文件,應該添加什麼?有沒有一個微不足道的方法來做到這一點? –
試試這個:
@ECHO OFF &SETLOCAL
CD /d dir1
:loop
FOR %%a IN (file) DO SET "size=%%~za"
PING -n 10 localhost >NUL
FOR %%a IN (file) DO IF %%~za equ %size% (move "%%~a" dir2) ELSE GOTO :loop
你可以有一個腳本,而不是CLI命令。 – Endoro