Batch file 如何将其转换为使用文本文件?

Batch file 如何将其转换为使用文本文件?,batch-file,text-files,delete-file,Batch File,Text Files,Delete File,我想使用另一种方法将我的文件从文件夹中删除,并将其列入白名单 其概念是将文件名添加到文本文件中,以防止其被删除。我如何做到这一点?到目前为止,这就是我所拥有的。我只是不想在将来讨论所有的括号: for %%i in ("universe\*.world") do ( if /i not "%%~nxi"=="alpha_-47760677_13528428_3442937_2_8.world" ( if /i not "%%~nxi"=="alpha_-91359870_-23985140_-

我想使用另一种方法将我的文件从文件夹中删除,并将其列入白名单

其概念是将文件名添加到文本文件中,以防止其被删除。我如何做到这一点?到目前为止,这就是我所拥有的。我只是不想在将来讨论所有的括号:

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

if /i not "%%~nxi"=="alpha_-47760677_13528428_3442937_2_8.world" (
if /i not "%%~nxi"=="alpha_-91359870_-23985140_-2679670_4_2.world" (
if /i not "%%~nxi"=="beta_-10_-18_-22519438_9.world" (
if /i not "%%~nxi"=="alpha_71479806_30568958_-29806832_11_4.world" (
if /i not "%%~nxi"=="alpha_49727000_-95701173_-4914589_9.world" (
if /i not "%%~nxi"=="gamma_-98261021_73451017_-13446340_2_5.world" (
if /i not "%%~nxi"=="test2.world" (
if /i not "%%~nxi"=="test2.world" (
if /i not "%%~nxi"=="test2.world" (
if /i not "%%~nxi"=="test2.world" (
if /i not "%%~nxi"=="test2.world" (
if /i not "%%~nxi"=="test2.world" (
del /q "%%i"

)))))))))))))
)
假设我要从中提取列表的文本文件是whitelist.txt,每行都有我保留的文件名:

alpha_-47760677_13528428_3442937_2_8.world
alpha_-91359870_-23985140_-2679670_4_2.world
beta_-10_-18_-22519438_9.world
alpha_71479806_30568958_-29806832_11_4.world
alpha_49727000_-95701173_-4914589_9.world
gamma_-98261021_73451017_-13446340_2_5.world
或者甚至不加“.world”扩展名

我尝试过使用它,但当它查找不可删除的文件时,由于“未找到文件-C:\Program”的原因,它会被切断,因为程序文件(x86)中的空间具有以下性质:

for /f %%i in ("whitelist.txt") do attrib +r %%i & del /q "universe\*.world" & for /f %%i in ("whitelist.txt") do attrib -r %%i
@ECHO关闭
SETLOCAL
对于“.\*.world”中的%%i,请执行以下操作(
键入q20769624.txt | FINDSTR/i/b/e/L/c:“%%~ni”>NUL
如果错误级别1回显删除“%%i”
)
后藤:EOF
其中,
q20769624.txt
是您的白名单文件,没有
.world
附录

此批处理将简单地
echo
要删除的文件。删除
DEL
之前的
ECHO
关键字,以在测试后激活删除功能


修改为允许在文件名中使用空格,在数据文件末尾不使用换行符。

将您的路径放在副标题中:
“C:\path with spaces”
。最终将
attrib-r%%i
替换为
attrib-r“%%i”
“在此时是意外的”添加括号给了我这个结果。即使我正确地修复了它,它似乎甚至不想删除绝对最好的答案!非常感谢你,马古!实际上我遇到了一个奇怪的问题。你知道为什么我的gamma文件被删除了吗?使用上面相同的编码,但没有.world,它将避开gamma文件之外的所有内容。只有当我将.world放入白名单时,它才会被删除。请尝试使用
/c:%%~ni”
假设
gamma
是白名单中的最后一个条目,我发现我可以通过删除最后一行之后的换行符来失败。使用
type
方法似乎可以解决问题。我还可以使数据线一端或另一端有杂散空间的线失效。修复数据比修复该数据上的批处理更容易。。。