Batch file 删除所有文件,包括带有空格的文件
我正在寻找一种方法来删除目录中早于Batch file 删除所有文件,包括带有空格的文件,batch-file,Batch File,我正在寻找一种方法来删除目录中早于x天且不具有特定扩展名的所有文件,我第一次发现了以下命令行: forfiles -p "C:\Test" -s -m *.* /D -5 /C "cmd /c del @path" 这是第二个: for /f %%F in ('dir /b /a-d ^| findstr /vile ".bat"') do del "%%F" 但无法在一个命令行中执行这些操作,第二个命令行会忽略名称中包含空格的文件 请注意,我是在批处理文件(DeleteOldFiles.b
x
天且不具有特定扩展名的所有文件,我第一次发现了以下命令行:
forfiles -p "C:\Test" -s -m *.* /D -5 /C "cmd /c del @path"
这是第二个:
for /f %%F in ('dir /b /a-d ^| findstr /vile ".bat"') do del "%%F"
但无法在一个命令行中执行这些操作,第二个命令行会忽略名称中包含空格的文件
请注意,我是在批处理文件(DeleteOldFiles.bat
)中执行此操作的。
提前感谢大家。当使用带有
/f
的for循环时,某些特殊字符是默认的delimeters。其中一个是空格,因此带有空格的名称将被空格分割。因此,我们需要ad“delims=“
来覆盖默认delims
但是,我怀疑您希望同时删除旧文件和排除某些bat扩展名,这纯粹是因为批处理文件可能与要删除的文件一样位于sam目录中。您只需将文件放在其他位置并指定需要删除文件的目录的路径,就可以克服这一问题。如果是这样,只需将其添加到批处理文件中,并将该文件放置在单独的目录中:
forfiles -p "C:\Test" -s -m *.* /D -5 /C "cmd /c del @path"
如果您想从包含批处理文件的目录中删除所有其他文件,并在另一个目录中分别删除早于N个日期的文件,则可以这样做
批处理文件版本:
@echo off
forfiles -p "C:\Test" -s -m *.* /D -5 /C "cmd /c del @path"
for /f "delims=" %%F in ('dir /b /a-d ^| findstr /vile ".bat"') do echo del "%%F"
pause
forfiles -p "C:\Test" -s -m *.* /D -5 /C "cmd /c del @path" & for /f "delims=" %%F in ('dir /b /a-d ^| findstr /vile ".bat"') do echo del "%%F"
Cmdline版本:
@echo off
forfiles -p "C:\Test" -s -m *.* /D -5 /C "cmd /c del @path"
for /f "delims=" %%F in ('dir /b /a-d ^| findstr /vile ".bat"') do echo del "%%F"
pause
forfiles -p "C:\Test" -s -m *.* /D -5 /C "cmd /c del @path" & for /f "delims=" %%F in ('dir /b /a-d ^| findstr /vile ".bat"') do echo del "%%F"
但是要小心放置批处理文件的位置,因为
for
循环的命令中没有特定路径。正是出于这个原因,我将echo
放在del
之前,一旦您确定查询echo
是您期望的结果,您就可以删除echo
以执行实际任务 FORFILES命令有一个选项可以查看文件扩展名是什么。因此,您所要做的就是使用该变量将其与您试图排除的扩展进行比较
forfiles -p "C:\Test" -s -m *.* /D -5 /C "cmd /c if /I not @ext==0x22bat0x22 del @path"
0x22是双引号的十六进制表示形式。Forfiles变量总是被引用。批处理文件或来自cmdline?这正是我想要的,我只是添加了相对目录来删除批处理文件目录中的文件,而不删除批处理文件本身,因此非常感谢。”forfiles-p%~dp0-s-m/D-60/C“cmd/C if/I not@ext==0x22bat0x22 del@path”'我正在处理的目录是一个临时的大多数word和excel文件的目录,这些文件是根据上一个目录中的模型文件创建的,我在打印完这些文件后保留这些文件,直到我确定没有错误,并且它们已由主管签名并发送到目标。正如您所怀疑的,出于某些原因,我想将批处理文件放在与文件相同的目录中,我更愿意这样做,因为@Squashman的答案正是我想要的,尽管您的答案对我很有帮助。谢谢你们两位。