需要在我的.bat中添加白名单

时间:2013-12-13 22:52:12

标签: windows batch-file delete-file

所以我有一个删除某个扩展名的.bat,但我需要将其中的一些列入白名单。我没有太多运气。

xcopy "universe" "C:\Users\Administrator\Desktop\Backup\universe - %stamp%" /I
for %%i in ("universe\*.world") do if not "%%i"=="test.world" if not "%%i"=="test2.world" del /q "%%i"
exit

我制作了一些虚拟文件,但即使test.world和test2.world也被删除了.world。有人有任何想法吗?

如果可能,我想要的是一个简单的文本文件,它允许我在其上添加文件名并让它从那里白名单,因为生成的一些.world名称在名称中非常庞大。

2 个答案:

答案 0 :(得分:1)

当您尝试调试批处理文件时,ECHO是您的朋友。试试这个:

for %%i in ("universe\*.world") do echo %%i

这将打印文件名,例如“universe \ test.world”,这会使问题变得清晰。

您需要在要测试的名称中包含“universe”,例如:

if not "%%i"=="universe\test.world"

通过将代码分成多行,您可以使代码更具可读性:

for %%i in (universe\*.world) do (
  if not "%%i"=="universe\test.world" (
  if not "%%i"=="universe\test2.world" (
    echo %%i
  ))
)

请注意,在ECHO之后的行上,您需要与IF语句一样多的结束括号。

答案 1 :(得分:1)

这是一个解决方案 - 需要/i来匹配大写和小写,%%~nxi匹配文件名和扩展名。

for %%i in ("universe\*.world") do if /i not "%%~nxi"=="test.world" if /i not "%%~nxi"=="test2.world" del /q "%%i"