我正在创建批处理文件以快速删除特定文件夹中的所有文件(我在很多地方都有很多文档)。我试图删除每个文件,除了我正在运行它的批处理文件。我试图使用IF NOT语句,但我似乎无法使其工作。这是我的IF声明:
if not "%%a" == *Delete.bat" (
其中%% a是我正在测试的文件是否删除它。我很确定该错误来自该声明的" %% a":部分,但我无法证实这一点。
注意: 当我运行该文件时,它会删除包括其自身在内的所有内容。
答案 0 :(得分:1)
if
无法使用通配符。因此,只要您的批处理文件不以文字星号开头(不太可能,因为*
不是文件名的有效字符),这将不起作用。
Aacinis评论显示了你要走的路:
if /I "%%a" neq "%~NX0" del "%%a"
"%~NX0"
评估批处理文件的 N ame和e X 张力
答案 1 :(得分:0)
确实如果语句不能使用通配符。 要做你想做的事,将通配符放在for循环中而不是if语句
:: to navigate to the directory of the file
Cd "%~dp0"
for /f %%a in (*.*) do (
if not "%%a" == "delete.bat" (
del "%%a"
))
将会这样做