标题: [文件操作] 【已解决】批处理通过文件名列表对文件操作,生成失败清单出错 [打印本页]
作者: 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的循环出问题了。
被动的是,我不知道有哪些是成功操作的,哪些是失败的。
所以附上代码,请各位高手不吝指导!
感谢!- @echo off
- rem 批处理保存为ansi编码格式
- cd /d "%~dp0"
- set Ext=*.txt
- for %%i in (%Ext%) do (
- if not exist "%%~ni\" md "%%~ni\"
- for /f "useback delims=" %%a in ("%%i") do (
- for /f "tokens=* delims=1234567890 " %%x in ("%%a") do (
- if exist "%%x.mp4" (
- ren "%%x.mp4" "%%a.mp4"
- move "%%a.mp4" "%%~ni\"
- ) else (
- >>"%%~ni合集移动失败.txt" echo %%a
- )
- )
- )
- )
- 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 一次性列举完
- cd.>2.txt
- cd.>3.txt
- for %%a in (*.txt) do (
- cd.>1.txt
- echo %%a
- )
- 结果
- 2.txt
- 3.txt
-
-
- cd.>2.txt
- cd.>3.txt
- for %%a in (*.txt) do (
- cd.>4.txt
- echo %%a
- )
- 结果
- 2.txt
- 3.txt
- 4.txt
复制代码
作者: annwayili 时间: 2024-3-6 18:31
回复 7# 77七
多谢提供建议!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |