Board logo

标题: [文件操作] 【已解决】批处理通过文件名列表对文件操作,生成失败清单出错 [打印本页]

作者: annwayili    时间: 2024-3-6 15:14     标题: 【已解决】批处理通过文件名列表对文件操作,生成失败清单出错

基本情况
我在本论坛上大侠给出的BAT基础上,摸索着写了下面的批处理。
第一步是根据各个文件名列表(TXT)新建子目录(用各文件名列表它的文件名);
第二步是根据各文件名列表里的各行,将MP4文件进行重命名及移入相应的子目录文件夹内。 如果上述失败,则生成失败清单文件(TXT)。

试验情况
1、为了谨慎起见,我先用2个文件名列表在其它文件夹内来试,能在达到目的,没有问题, 然后才动手进行操作。              
2、出现下列问题后,我再用4个文件名列表在其它文件夹内试,也能达到目的,没有问题。再多数量就没有再试了

出现的问题
1、对同一个文件名列表,会生成两个失败清单TXT(比如对应着文件名列表A,有“A合集移动失败”及“A合集移动失败合集移动失败”2个清单)。
2、上述三个TXT文件,内容都是一样的。
3、新建的子目录文件夹确是生成了。我大致浏览了其中几个,相应文件都实际成功移入了----但是还是有上述三个文件。
(MP4文件很多,有上千个;相应的文件名列表及生成的子目录也很多,有20多个吧;我没有一一查验)

求助:
现在是失败清单不OK,我估计是BAT的循环出问题了。
被动的是,我不知道有哪些是成功操作的,哪些是失败的。

所以附上代码,请各位高手不吝指导!
感谢!
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "%~dp0"
  4. set Ext=*.txt
  5. for %%i in (%Ext%) do (
  6. if not exist "%%~ni\" md "%%~ni\"
  7. for /f "useback delims=" %%a in ("%%i") do (
  8. for /f "tokens=* delims=1234567890 " %%x in ("%%a") do (
  9. if exist "%%x.mp4" (
  10. ren "%%x.mp4" "%%a.mp4"
  11.                         move "%%a.mp4" "%%~ni\"
  12. ) else (
  13. >>"%%~ni合集移动失败.txt" echo %%a
  14. )
  15. )
  16. )
  17. )
  18. pause
复制代码

作者: ShowCode    时间: 2024-3-6 15:25

回复 1# annwayili


合集移动失败.txt
改成:
合集移动失败.log
作者: annwayili    时间: 2024-3-6 15:34

回复 2# ShowCode

非常感谢!我等一下恢复原状试一试这个方法。

不过,纳闷的是,为什么我用4个或是2个文件列表测试时,没出问题呢?
作者: Batcher    时间: 2024-3-6 15:37

回复 1# annwayili


参考for命令教程第8页:
http://bbs.bathome.net/thread-31727-1-1.html


作者: annwayili    时间: 2024-3-6 15:46

回复 2# ShowCode

测试了,非常好!再次感谢!
作者: annwayili    时间: 2024-3-6 15:47

回复 4# Batcher

谢谢!

看来我是踩中这个坑了

作者: 77七    时间: 2024-3-6 16:40

回复 3# annwayili


  for %%a in (*.txt) 边列举边处理,和排序有关系,可以改用for /f +dir 一次性列举完

  1. cd.>2.txt
  2. cd.>3.txt
  3. for %%a in (*.txt) do (
  4. cd.>1.txt
  5. echo %%a
  6. )
  7. 结果
  8. 2.txt
  9. 3.txt
  10. cd.>2.txt
  11. cd.>3.txt
  12. for %%a in (*.txt) do (
  13. cd.>4.txt
  14. echo %%a
  15. )
  16. 结果
  17. 2.txt
  18. 3.txt
  19. 4.txt
复制代码

作者: annwayili    时间: 2024-3-6 18:31

回复 7# 77七

多谢提供建议!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2