所以我有一个删除某个扩展名的.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名称在名称中非常庞大。
答案 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"