如果文件大小不再变化(完全处理),我想将文件从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