[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理检测文件名,如果是变量.mp4就从文本文件中删除变量所在的行

本帖最后由 thp2008 于 2021-3-21 20:18 编辑

文件文件的内容如下:
list.txt
abc=1a9b3c4d5e6f7g8h2
abc=2a3b6c4d5e6f7g8h1
abc=3a1b3c4d5e6f7g8h6
abc=4a4b2c4d5e6f7g8h3
abc=5a9b1c4d5e6f7g8h7
abc=6a4b9c4d5e6f7g8h4
abc=7a9b8c4d5e6f7g8h5

现有一个批处理
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims==" %%a in (list.txt) do (
  4.     set "str=%%a"
  5.     dir /b | findstr/i !str!
  6. )
复制代码
批处理输出的结果:
********* -_1a9b3c4d5e6f7g8h2.mp4
********* -_2a3b6c4d5e6f7g8h1.mp4.part
********* -_3a1b3c4d5e6f7g8h6.mp4
********* -_4a4b2c4d5e6f7g8h3.mp4
********* -_5a9b1c4d5e6f7g8h7.mp4.part
********* -_6a4b9c4d5e6f7g8h4.mp4
********* -_7a9b8c4d5e6f7g8h5.mp4

我想要修改一下这个批处理,
增加1个小功能:
添加一个检测输出结果的文件名的扩展名。
如果文件名的结尾是 !str!.mp4 就从List.txt 中,删除!str!变量所在的行。
如果文件名的结尾是 !str!.mp4.part 就不做任何处理。我本想只检测 !str!.mp4这个关键字的,
但是发现 !str!.mp4.part也包含这个字符串,也就是先要检测包含!str!.mp4,但又不能包含.mp4.part
如果文件名仅仅是!str!.mp4就表示也经下载完成了。
如果文件名是 !str!.mp4.part 下载过程出错了,没有下载完成,这是下载过程中的临时文件。
所以不知道这种情况该如何处理。


感谢!

回复 5# Batcher


    再次表示感谢,测试没有问题!大神就是大神!

TOP

回复 4# thp2008
  1. findstr "." "1.txt" >nul
  2. if errorlevel 1 (
  3.     exit /b
  4. )
  5. timeout /t 60 /nobreak
复制代码
判断文件是否为空的几个方法:

1.bat
  1. @echo off
  2. findstr "." "1.txt" >nul
  3. if errorlevel 1 (
  4.     echo Empty
  5. ) else (
  6.     echo Not empty
  7. )
  8. pause
复制代码
2.bat
  1. @echo off
  2. for %%i in ("1.txt") do (
  3.     if %%~zi equ 0 (
  4.         echo Empty
  5.     ) else (
  6.         echo Not empty
  7.     )
  8. )
  9. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher

另外,我想问下大神,比如下列代码
  1. @echo off
  2. D:\Tools\gawk\gawk\gawk.exe "!a[$0]++" List.txt >ListQu.txt
  3. :down
  4. for /f "delims=" %%A in (ListQu.txt)  do  (
  5. echo.
  6. echo.
  7.   echo down-dl.exe  %%A
  8.   down-dl.exe  %%A
  9. )
  10. TIMEOUT /T 60 /NOBREAK
  11. goto down
复制代码
我这是个循环的批处理,但是我想里里面加一条,当检测到ListQu.txt里面的内容为空的时候,自动退出,加在TIMEOUT /T 60 /NOBREAK的上面一行,应该怎么加。
因为我用刚刚您写的上面那个批处理,也作了一个循环,不停的检测并更新ListQu.txt,一断全部都下载完成了,我就让它自动退出,不再循环了。
感谢您的帮助!

TOP

回复 2# Batcher


    非常感谢,终于搞定了。测试了一下,没有问题,有部分代码没看懂,没事,我再来学习一下您的代码!

TOP

回复 1# thp2008
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. >"%temp%\list.txt.BatHome" type nul
  4. for /f "tokens=1-2 delims==" %%a in (list.txt) do (
  5.     set "str=%%b"
  6.     dir /b /a-d | findstr /i "!str!\.mp4$"
  7.     if errorlevel 1 (
  8.         >>"%temp%\list.txt.BatHome" echo %%a=%%b
  9.     )
  10. )
  11. move /y "%temp%\list.txt.BatHome" "list.txt"
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表