我想删除当前目录中的所有文件,但我想保留一个文件(update.bat)
我有这个脚本:
for /r %%i in (*) do if not '%%~ni' == 'update.bat' del %%i
它没有按预期工作,因为它删除了所有文件,似乎没有考虑条件。
我的脚本有什么问题?
答案 0 :(得分:1)
您缺少一件事:如果您的文件被称为update.bat
,则%%〜ni将返回update
,因为~n
仅返回名称而不返回扩展名。所以你正在检查update==update.bat
这是错误的。此外,如果您的路径包含空格,del %%i
可能会导致问题。你也应该避免不需要它们的空间。但是,将%%~ni
替换为%%~nxi
以获取名称和扩展名,您的代码将起作用:
for /r %%i in (*) do if not '%%~nxi' == 'update.bat' del %%i
但是这段代码“更干净”:
for /r %%i in (*) do if not "%%~nxi"=="update.bat" del "%%i"