除了一个文件外,如何删除当前目录中的所有文件?

时间:2017-11-02 13:20:59

标签: batch-file

我想删除当前目录中的所有文件,但我想保留一个文件(update.bat)

我有这个脚本:

for /r %%i in (*) do if not '%%~ni' == 'update.bat' del %%i

它没有按预期工作,因为它删除了所有文件,似乎没有考虑条件。

我的脚本有什么问题?

1 个答案:

答案 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"