Batch file 用于删除空.dat文件的批处理脚本
我需要删除文件大小为0的所有.dat扩展名文件。我已经开发了以下批处理脚本,但效果不好。你能帮我把这件事弄清楚吗Batch file 用于删除空.dat文件的批处理脚本,batch-file,cmd,Batch File,Cmd,我需要删除文件大小为0的所有.dat扩展名文件。我已经开发了以下批处理脚本,但效果不好。你能帮我把这件事弄清楚吗 @ECHO OFF SET OLD_ZIPS=C:\Users\dkbdodanwala\Desktop\s\*.dat :deleteFiles for /f "tokens=1* delims=;" %%A in ("%OLD_ZIPS%") do ( if exist "%%A" if %%~zA==0 ( DEL "%%A" ) set O
@ECHO OFF
SET OLD_ZIPS=C:\Users\dkbdodanwala\Desktop\s\*.dat
:deleteFiles
for /f "tokens=1* delims=;" %%A in ("%OLD_ZIPS%") do (
if exist "%%A" if %%~zA==0 (
DEL "%%A"
)
set OLD_ZIPS=%%B
)
如果改用
WMIC
,您甚至不需要For
循环:
WMIC数据文件,其中“Drive='C:'和Path='\\Users\\dkbodanwala\\Desktop\\s\\'和扩展名='dat'和FileSize='0')调用Delete
您的代码有点让人困惑。看起来您正试图获取.dat文件的目录列表,但使用FOR/F
命令无法获取。您需要在FOR/F
命令中使用DIR
命令。我也不明白为什么要用分号作为分隔符。你是说你的文件名中有分号吗?对不起,我的错。使用此脚本,我可以删除扩展名为.dat的所有空文件,但当有非空文件脚本不起作用时。没有理由使用for/F
循环,您只需要一个标准for
循环:for%%a in(“C:\Users\dkbodanwala\Desktop\s\*.dat”)do if%%~zA eq 0 del%%~a
您的代码不会检查所有.dat文件是否为0字节。它只检查文件夹中的第一个.dat文件是否为0字节,然后全局删除所有.dat文件。使用变量%%B的SET
命令在代码中仍然没有意义。@ECHO OFF SET OLD_ZIPS=C:\Users\dkbodanwala\Desktop\s*.dat for%%A in(“%OLD_ZIPS%”)如果%%zA eq 0 del%%A想出了这一个,请执行。这是正确的吗?非常感谢你的帮助。