所以我在尝试用FORFILES解决这个问题时遇到了麻烦。我正在尝试获取不超过4天的文件。所以基本上任何少于4天的时间。然而,这似乎不太可能,因为/d -4获得了4天或更早的所有物品。
下面是我到目前为止所知道的。
FORFILES /p T:\Downloads /m *.exe /c "cmd /c copy @path T:\Downloads\Applications | echo Copying @path" /d +4有人知道这是不是可能的?或者是一个更好的选择?
发布于 2013-10-07 04:47:12
这可能对你有用:
@echo off &setlocal
cd /d "T:\Downloads"
(for %%a in (*.exe) do @echo "%%~a")>dir.txt
for /f "delims=" %%a in ('forfiles /d -4 /m *.exe ^|findstr /vig:/ dir.txt') do echo Copying %%a© "%%~a" "T:\Downloads\Applications"
del dir.txt不幸的是,这在XP中不起作用。
发布于 2013-10-07 07:15:48
这似乎适用于这里:它计算4天前的日期,并在forfiles命令中使用该日期。
@echo off
set date1=today
set qty=-4
set separator=/
if /i "%date1%" EQU "TODAY" (set date1=now) else (set date1="%date1%")
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%qty%,%date1%)
echo>>"%temp%\%~n0.vbs" d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^&_
echo>>"%temp%\%~n0.vbs" right(100+month(s),2)^&_
echo>>"%temp%\%~n0.vbs" right(100+day(s),2)^&_
echo>>"%temp%\%~n0.vbs" d
for /f %%a in ('cscript //nologo "%temp%\%~n0.vbs"') do set result=%%a
del "%temp%\%~n0.vbs"
endlocal& (
set "YY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "daynum=%result:~-1%"
)
set "day=%DD%%separator%%MM%%separator%%YY%"
FORFILES /p T:\Downloads /m *.exe /d %day% /c "cmd /c copy @path T:\Downloads\Applications & echo Copying @path"
pause发布于 2013-10-10 18:08:35
我决定在前一次约会时选择另一种方式。我在网上找到了另一个脚本,它可以批量获取之前的日期,这很好地满足了我的需求。因为我可以调用这个文件,并将我想要的天数传递给它,它会输出我想要的日期。
http://www.powercram.com/2010/07/get-yesterdays-date-in-ms-dos-batch.html
@echo off
set yyyy=
set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))
if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100
set CurDate=%mm%/%dd%/%yyyy%
set dayCnt=%1
if "%dayCnt%"=="" set dayCnt=1
REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100
:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1
:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through
:SET31
set /A dd=31 + %dd%
goto CHKDAY
:SET30
set /A dd=30 + %dd%
goto CHKDAY
:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29
:SET28
set /A dd=28 + %dd%
goto CHKDAY
:SET29
set /A dd=29 + %dd%
goto CHKDAY
:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%
REM Set IIS and AWS date variables
set IISDT=%yyyy:~2,2%%mm%%dd%
set AWSDT=%yyyy%-%mm%-%dd%结果如下所示: IIS日期:2010AWS日期: 100727 -07-27
https://stackoverflow.com/questions/19209663
复制相似问题