Batch file 为什么要删除每个文本文件而不是昨天';日期
我这里有一个批处理文件,它将删除昨天的文件 为什么要在指定日期删除所有内容?有什么提示吗Batch file 为什么要删除每个文本文件而不是昨天';日期,batch-file,Batch File,我这里有一个批处理文件,它将删除昨天的文件 为什么要在指定日期删除所有内容?有什么提示吗 @echo off set "source=E:\test" 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(1
@echo off
set "source=E:\test"
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 "E:\test" %%G in (*%result%.txt) do (
DEL /F /Q "%%~fG" "E:\test"
if not exist "E:\test%%~nxG" (
echo File "%%~fG" Deleted
) else (
echo File "%%~fG" was not Deleted
)
)
pause
我正在尝试学习如何使用这个较短的方法:简而言之,它会删除所有内容,因为您告诉它这样做:
DEL /F /Q "%%~fG" "E:\test"
当告诉del
命令使用/F
orce和/Q
uiet选项从目录中删除时,它将强制且安静地删除该文件夹中的所有内容。这正是您要命令执行的操作。您将首先将删除文件与找到的日期连接起来,然后删除目录中的所有内容。它应该是:
del /F /Q "%%~fG"
要演示发生了什么,请创建以下批处理文件。在每次暂停时
,检查删除内容的结果,然后按任意键继续:
@echo off
mkdir E:\DelTest
echo test>E:\DelTest\test20200225.txt
echo test>E:\DelTest\test20200224.txt
echo test>E:\DelTest\test20200223.txt
del E:\DelTest\*20200224.txt
dir /b E:\DelTest
pause
del /F /Q E:\DelTest
dir /b E:\Deltest
pause
rmdir /Q E:\DelTest >nul >2&1
del %~0
del/?
fromcmd
提供:
指定一个或多个文件或目录的列表