昨天的日期将与 .txt 的文件名进行比较
Yesterday date will compare to the filename of .txt
我的代码也来自一些 post 这里,我正在使用 robocopy 这样我就可以移动文件而不是复制和粘贴它们。
这是我的信息
**result** = my yesterdays date
**Source Path** = where the main file is.
**Destination Path** = where it should be move
我正在尝试将一个日期为昨天的文件从源移动到目标。
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "result=%yyyy%%mm%%dd%"
echo %result%
FOR /R %C:\Users\JBP-Admin\Desktop\Pugad\Forback UP% %%G IN (*.txt) DO (
set file=%%~nG
ROBOCOPY "C:\Users\JBP-Admin\Desktop\Pugad\Forback UP" "C:\Users\JBP-Admin\Desktop\Pugad\Forback UP\Destination" "*.txt" /mov
If "%result%"=="*.txt" (
echo Filename "%file%" has been backed up
) else (
echo Filename "%file%" nothing to back up yesterday
)
这是未经测试的,因为我现在无法设置您的环境的复制。
我们只需要匹配源目录中的每个文件以日期和扩展名结尾,然后仅在匹配时复制每个文件,测试目标文件以查看它是否存在。您可以使用复制而不是 robocopy。
@echo off
set "source=C:\Users\JBP-Admin\Desktop\Pugad\Forback_UP"
set "destination=C:\Users\JBP-Admin\Desktop\Pugad\Forback_UP\Destination"
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "result=%yyyy%%mm%%dd%"
echo %result%
for /r "%source%" %%G in (*%result%.txt) do (
copy /Y "%%~fG" "%destination%"
if exist "%destination%\%%~nxG" (
echo File "%%~fG" backed up
) else (
echo File "%%~fG" was not backed up
)
)
pause
附带说明一下,如果您的目的是 move
文件而不是复制,只需将 copy
替换为 move
我的代码也来自一些 post 这里,我正在使用 robocopy 这样我就可以移动文件而不是复制和粘贴它们。
这是我的信息
**result** = my yesterdays date
**Source Path** = where the main file is.
**Destination Path** = where it should be move
我正在尝试将一个日期为昨天的文件从源移动到目标。
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "result=%yyyy%%mm%%dd%"
echo %result%
FOR /R %C:\Users\JBP-Admin\Desktop\Pugad\Forback UP% %%G IN (*.txt) DO (
set file=%%~nG
ROBOCOPY "C:\Users\JBP-Admin\Desktop\Pugad\Forback UP" "C:\Users\JBP-Admin\Desktop\Pugad\Forback UP\Destination" "*.txt" /mov
If "%result%"=="*.txt" (
echo Filename "%file%" has been backed up
) else (
echo Filename "%file%" nothing to back up yesterday
)
这是未经测试的,因为我现在无法设置您的环境的复制。
我们只需要匹配源目录中的每个文件以日期和扩展名结尾,然后仅在匹配时复制每个文件,测试目标文件以查看它是否存在。您可以使用复制而不是 robocopy。
@echo off
set "source=C:\Users\JBP-Admin\Desktop\Pugad\Forback_UP"
set "destination=C:\Users\JBP-Admin\Desktop\Pugad\Forback_UP\Destination"
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "result=%yyyy%%mm%%dd%"
echo %result%
for /r "%source%" %%G in (*%result%.txt) do (
copy /Y "%%~fG" "%destination%"
if exist "%destination%\%%~nxG" (
echo File "%%~fG" backed up
) else (
echo File "%%~fG" was not backed up
)
)
pause
附带说明一下,如果您的目的是 move
文件而不是复制,只需将 copy
替换为 move