3

したがって、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

これが可能かどうか知っている人はいますか?それとも、より良い代替案ですか?

4

3 に答える 3

3

これはあなたのために働くかもしれません:

@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 では機能しません。

于 2013-10-06T20:47:12.113 に答える
0

これはここで機能しているようです: 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-06T23:15:47.640 に答える