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

时间:2013-12-25 16:37:27

标签: 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_-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”而由于Program Files(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

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
FOR %%i IN (".\*.world") DO (
  TYPE q20769624.txt|FINDSTR /i /b /e /L /c:"%%~ni"  >NUL
 IF ERRORLEVEL 1 ECHO DEL "%%i"
)
GOTO :EOF

q20769624.txt是您的白名单文件,没有.world附录。

此批次只是echo要删除的文件。在ECHO之前删除DEL关键字以在测试后激活删除功能。

修改为允许文件名中的空格,并且数据文件末尾没有换行符。