CMD批处理文件,如果在文本txt文件的列表中找不到文件,则删除文件

卡洛斯·科斯塔

我需要一个 bat 来删除所有不包含在文本文件中的具有相对名称的文件

在文本文件 list.txt 我有这个:

C:\S-ATLANTICO-1\MEDIA\Innplay-Logo.mp4
C:\S-ATLANTICO-1\MEDIA\logo-FB_sep.png
C:\S-ATLANTICO-1\MEDIA\logo-news_sa.png

并且在同一个文件夹中有这个文件:

Innplay-Logo.mp4
logo-FB_sep.png
logo-news_sa.png
Carlos.jpg
Sapo.png
list.txt

所以我需要删除下一个文件,因为 list.txt 中不存在

Carlos.jpg
Sapo.png

但我也必须保留 LIST.TXT

我试过这个,但没有成功

@echo off
setlocal
set "folder=C:\S-ATLANTICO-1\MEDIA"
set "excludeFile=C:\S-ATLANTICO-1\MEDIA\list.txt"
for /f "eol=: delims=" %%F in ('dir /b /a-d "%folder%" ^| findstr  /vig:"%excludeFile%" ^| findstr /v /i "\list.txt"') do del "%folder%\%%F"

任何人都可以帮助我解决这个问题。

谢谢

马斯马斯先生

试一试。它适用于我的测试。

我已经放置了echo语句,而不是实际删除任何内容。

@echo off
setlocal
set "folder=C:\S-ATLANTICO-1\MEDIA"
set "excludeFile=%folder%\list.txt"

:: Check that both the target folder and filter file exist before starting up.
if not exist "%folder%" echo %~nx0: The target folder doesn't exist.  Nothing to do.&& goto :EOF
if not exist "%excludeFile%" echo %~nx0: The list file doesn't exist at the location specified!&& goto :EOF

for /f "delims=" %%F in ('dir /b /a-d "%folder%"') do call :process_file "%%F" "%~0" "%excludeFile%"
goto :EOF

:: --------------------------------------------
:process_file
:: --------------------------------------------
set input_file=%~1
set this_batch=%~2
set list_file=%~nx3

:: Skip list file and this batch file too
if "%this_batch%"=="%input_file%" echo Skip this batch file&& goto :EOF
if "%list_file%"=="%input_file%" echo Skip list file&& goto :EOF

:: Grep for the include file in the list 
findstr /C:"%input_file%" "%excludeFile%" 2>&1 1>NUL

:: Bail out if the input line was in the list file
if not errorlevel 1 echo Skip "%input_file%", it is in %list_file%&& goto :EOF

:: Delete anything left
echo delete file %input_file%&& goto :EOF
goto :EOF

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果找不到路径,批处理文件将停止

来自分类Dev

从cmd批处理文件中的“类型”中删除字符

来自分类Dev

批处理文件系统在循环后找不到文件

来自分类Dev

系统找不到批处理文件中指定的文件

来自分类Dev

使用批处理文件在.txt文件中搜索双字

来自分类Dev

“系统找不到指定的路径”批处理文件错误

来自分类Dev

批处理文件系统找不到指定的路径

来自分类Dev

如何使用批处理文件有选择地删除文本文件中的文本?

来自分类Dev

如果在file2中找不到文件1中的grep行

来自分类Dev

如果在file2中找不到文件1中的grep行

来自分类Dev

forloop在批处理文件中无法按预期工作,但如果在命令提示符中给出了则可以工作

来自分类Dev

窗口批处理文件-从文件路径中删除目录

来自分类Dev

批处理文件以从文件名中删除减号

来自分类Dev

批处理文件:从.tsv文件中删除回车

来自分类Dev

批处理文件:删除一堆txt文件中的行

来自分类Dev

批处理文件:删除一堆txt文件中的行

来自分类Dev

从Windows的批处理文件中删除特定文件夹(如果为空)?

来自分类Dev

如何从批处理文件的文本文件中的行中删除多余的逗号?

来自分类Dev

cmd批处理文件删除字符失败

来自分类Dev

在dockerfile中复制的文件:如果在特定位置,则找不到

来自分类Dev

在dockerfile中复制的文件:如果在特定位置,则找不到

来自分类Dev

在dockerfile中复制的文件:如果在特定位置,则找不到

来自分类Dev

Tornado:如果在 StaticFileHandler 中找不到,如何发送默认文件

来自分类Dev

如果在 python 中找不到文件,有没有办法抛出异常?

来自分类Dev

为什么双击批处理文件找不到要删除的注册表值?

来自分类Dev

如何使用Windows批处理文件从文本文件中的文件列表中递归复制文件?

来自分类Dev

如何从批处理文件的文本文件的行中删除多余的逗号?

来自分类Dev

删除文本文件中带有“。”的行。批处理文件

来自分类Dev

如何通过批处理文件从文本文件中删除不需要的行?

Related 相关文章

  1. 1

    如果找不到路径,批处理文件将停止

  2. 2

    从cmd批处理文件中的“类型”中删除字符

  3. 3

    批处理文件系统在循环后找不到文件

  4. 4

    系统找不到批处理文件中指定的文件

  5. 5

    使用批处理文件在.txt文件中搜索双字

  6. 6

    “系统找不到指定的路径”批处理文件错误

  7. 7

    批处理文件系统找不到指定的路径

  8. 8

    如何使用批处理文件有选择地删除文本文件中的文本?

  9. 9

    如果在file2中找不到文件1中的grep行

  10. 10

    如果在file2中找不到文件1中的grep行

  11. 11

    forloop在批处理文件中无法按预期工作,但如果在命令提示符中给出了则可以工作

  12. 12

    窗口批处理文件-从文件路径中删除目录

  13. 13

    批处理文件以从文件名中删除减号

  14. 14

    批处理文件:从.tsv文件中删除回车

  15. 15

    批处理文件:删除一堆txt文件中的行

  16. 16

    批处理文件:删除一堆txt文件中的行

  17. 17

    从Windows的批处理文件中删除特定文件夹(如果为空)?

  18. 18

    如何从批处理文件的文本文件中的行中删除多余的逗号?

  19. 19

    cmd批处理文件删除字符失败

  20. 20

    在dockerfile中复制的文件:如果在特定位置,则找不到

  21. 21

    在dockerfile中复制的文件:如果在特定位置,则找不到

  22. 22

    在dockerfile中复制的文件:如果在特定位置,则找不到

  23. 23

    Tornado:如果在 StaticFileHandler 中找不到,如何发送默认文件

  24. 24

    如果在 python 中找不到文件,有没有办法抛出异常?

  25. 25

    为什么双击批处理文件找不到要删除的注册表值?

  26. 26

    如何使用Windows批处理文件从文本文件中的文件列表中递归复制文件?

  27. 27

    如何从批处理文件的文本文件的行中删除多余的逗号?

  28. 28

    删除文本文件中带有“。”的行。批处理文件

  29. 29

    如何通过批处理文件从文本文件中删除不需要的行?

热门标签

归档