首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不到4天的FORFILES

不到4天的FORFILES
EN

Stack Overflow用户
提问于 2013-10-06 21:58:54
回答 3查看 4.8K关注 0票数 3

所以我在尝试用FORFILES解决这个问题时遇到了麻烦。我正在尝试获取不超过4天的文件。所以基本上任何少于4天的时间。然而,这似乎不太可能,因为/d -4获得了4天或更早的所有物品。

下面是我到目前为止所知道的。

代码语言:javascript
复制
FORFILES /p T:\Downloads /m *.exe /c "cmd /c copy @path T:\Downloads\Applications | echo Copying @path" /d +4

有人知道这是不是可能的?或者是一个更好的选择?

EN

回答 3

Stack Overflow用户

发布于 2013-10-07 04:47:12

这可能对你有用:

代码语言:javascript
复制
@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&copy "%%~a" "T:\Downloads\Applications"
del dir.txt

不幸的是,这在XP中不起作用。

票数 3
EN

Stack Overflow用户

发布于 2013-10-07 07:15:48

这似乎适用于这里:它计算4天前的日期,并在forfiles命令中使用该日期。

代码语言:javascript
复制
@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
票数 0
EN

Stack Overflow用户

发布于 2013-10-10 18:08:35

我决定在前一次约会时选择另一种方式。我在网上找到了另一个脚本,它可以批量获取之前的日期,这很好地满足了我的需求。因为我可以调用这个文件,并将我想要的天数传递给它,它会输出我想要的日期。

http://www.powercram.com/2010/07/get-yesterdays-date-in-ms-dos-batch.html

代码语言:javascript
复制
@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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19209663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档