标题: [文件操作] [已解决]批处理怎样查找本目录下视频文件,按文件名移动到对应文件夹? [打印本页]
作者: comicguests 时间: 2011-7-7 13:04 标题: [已解决]批处理怎样查找本目录下视频文件,按文件名移动到对应文件夹?
之前发帖有人说我表达不太清楚,所以我就做了个流程图(大概)
请各位高手帮忙看一下,
我还只是菜鸟,请多关照!
图挂了的话,点我
作者: ArdentMan 时间: 2011-7-7 15:54
本帖最后由 ArdentMan 于 2011-7-8 09:09 编辑
- @Echo Off&SetLocal EnableDelayedExpansion
- For /R %%a In (*.mp4 *.rmvb) Do (
- Set "Str=%%~nxa"&Set "Flag="
- For /F "Delims=" %%b In ('Dir /ad /b /s F:\视频') Do (
- If Not Defined Flag (
- Set "Var=%%~nb"
- For %%c In ("!Var!") Do If "!Str:%%~c=!" NEQ "!Str!" Set "Flag=a"
- For %%c In ("!Str!") Do If "!Var:%%~c=!" NEQ "!Var!" Set "Flag=a"
- If Defined Flag Move "%%a" "%%b\"
- )
- )
- If Not Defined Flag (
- SetLocal&Cls
- For /f "Delims=" %%b In ('Dir /ad /b F:\视频') Do (
- Set /A Num+=1,Number+=1&Set ".!Num!=F:\视频\%%b"
- Set "Str=000!Num!"&Set "Var=%%b "
- Set /P=[!Str:~-3!]!Var:~,20!<nul
- If "!Number!" EQU "2" Echo,&Set /A Number=0
- )
- Echo,&Set "Str="&Set /P Str=请选择文件夹:
- EndLocal&For %%b In ("!Str!") Do Set "Str=!.%%~b!"
- Echo,&Set "Var="&Set /P Var=请输入模式(A或者D):
- If /i "!Var!" EQU "D" (
- SetLocal&Cls
- For /F "Delims=" %%b In ('Dir /s /ad /b "!Str!"') Do (
- Set /A Num+=1,Number+=1&Set ".!Num!=%%b"
- Set "Str1=000!Num!"&Set "Var=%%b "
- Set /P=[!Str1:~-3!]!Var:~,20!<nul
- If "!Number!" EQU "2" Echo,&Set /A Number=0
- )
- Echo,&Set "Str="&Set /P Str=请选择文件夹:
- EndLocal&For %%b In ("!Str!") Do Set "Str=!.%%~b!"
- )
- Cls&Set /P Name=所选文件夹是!Str!,请输入新文件夹名:
- Move "%%a" "!Str!\%Name%\"
- )
- )
复制代码
作者: comicguests 时间: 2011-7-7 16:13
2# ArdentMan
感谢您的回复,但我运行了一下后,闪了一下批处理窗口就退出了,我是win7旗舰版,
或者说 需要某些第三方程序?
再次感谢!!!
作者: Demon 时间: 2011-7-7 16:15
http://www.bathome.net/viewthread.php?tid=13106
有区别吗
作者: ArdentMan 时间: 2011-7-7 16:21
本帖最后由 ArdentMan 于 2011-7-7 16:51 编辑
3# comicguests
代码已修改再运行下看,
实在是很繁杂~~~~
作者: comicguests 时间: 2011-7-7 20:43
4# Demon
虽然重发帖不好,但那个无人问津了
而且,再改就太长了,放弃
....还是有点区别的....
作者: comicguests 时间: 2011-7-7 20:55
5# ArdentMan
真的是非常感谢,可还是晃一下就关闭了...
难道就我的电脑这样么....
您的电脑不闪么?
作者: ArdentMan 时间: 2011-7-7 21:07
7# comicguests
再次检查代码少了两个& 再运行
作者: comicguests 时间: 2011-7-8 08:51
8# ArdentMan
还是闪了就没啊...(╯﹏╰)
作者: ArdentMan 时间: 2011-7-8 09:06
本帖最后由 ArdentMan 于 2011-7-8 09:10 编辑
9# comicguests
再试一次,
如还不行,
那没办法了,
你这个本来就很繁杂,
加上你一点都不会调试,
别人不可能自己先构造出一个测试环境吧?
作者: comicguests 时间: 2011-7-8 10:44
本帖最后由 comicguests 于 2011-7-8 03:50 编辑
10# ArdentMan
嗯!这次成功了!太感谢了!!!!!
不过,能再劳烦一下吗?
【001】 canner 【002】other
【003】 吐槽
请选择文件夹:
cmd窗口显示了以上内容,应该是在f:\视频\中建文件夹的,
可我不知道它要处理那个视频,可不可以变成这样?
[異域字幕組][夏目友人帳 参][Natsume Yuujinchou San][01V2][1024x576][繁體]
【001】 canner 【002】other
【003】 吐槽
请选择文件夹:
在最上显示出视频文件名?
一个小失误:我有一个文件夹名为 c 的文件夹,结果含有c 的视频全移了过去,可不可以相同字符超过4个才可以移动呢?
再次感谢!!
作者: ArdentMan 时间: 2011-7-8 11:42
本帖最后由 ArdentMan 于 2011-7-8 12:33 编辑
- @Echo Off&SetLocal EnableDelayedExpansion
- For /R %%a In (*.mp4 *.rmvb) Do (
- Set "Str=%%~nxa"&Set "Flag="
- For /F "Delims=" %%b In ('Dir /ad /b /s F:\视频') Do (
- If Not Defined Flag (
- Set "Var=%%~nb"
- For %%c In ("!Var!") Do If "!Str:%%~c=!" NEQ "!Str!" If "!Var:~4!" NEQ "" Set "Flag=a"
- For %%c In ("!Str!") Do If "!Var:%%~c=!" NEQ "!Var!" If "!Str:~4!" NEQ "" Set "Flag=a"
- If Defined Flag Move "%%a" "%%b\"
- )
- )
- If Not Defined Flag (
- SetLocal&Cls
- Echo 视频文件:%%~nxa&Echo,
- For /f "Delims=" %%b In ('Dir /ad /b F:\视频') Do (
- Set /A Num+=1,Number+=1&Set ".!Num!=F:\视频\%%b"
- Set "Str=000!Num!"&Set "Var=%%b "
- Set /P=[!Str:~-3!]!Var:~,20!<nul
- If "!Number!" EQU "2" Echo,&Set /A Number=0
- )
- Echo,&Set "Str="&Set /P Str=请选择文件夹:
- EndLocal&For %%b In ("!Str!") Do Set "Str=!.%%~b!"
- Echo,&Set "Var="&Set /P Var=请输入模式(A或者D):
- If /i "!Var!" EQU "D" (
- SetLocal&Cls
- Echo 视频文件:%%~nxa&Echo,
- For /F "Delims=" %%b In ('Dir /s /ad /b "!Str!"') Do (
- Set /A Num+=1,Number+=1&Set ".!Num!=%%b"
- Set "Str1=000!Num!"&Set "Var=%%b "
- Set /P=[!Str1:~-3!]!Var:~,20!<nul
- If "!Number!" EQU "2" Echo,&Set /A Number=0
- )
- Echo,&Set "Str="&Set /P Str=请选择文件夹:
- EndLocal&For %%b In ("!Str!") Do Set "Str=!.%%~b!"
- )
- Cls&Set /P Name=所选文件夹是!Str!,请输入新文件夹名:
- Move "%%a" "!Str!\%Name%\"
- )
- )
复制代码
模糊匹配很难,很难,很难!!!
作者: comicguests 时间: 2011-7-8 17:10
12# ArdentMan
感谢,非常感谢,非常非常感谢!!
作者: comicguests 时间: 2011-7-8 17:51
12# ArdentMan
本来想自己解决一下的,果然不行啊.....
视频文件:[KTXP&DYMY][Kamisama Dolls][01][GB][RV10].rmvb
[001]canner [002]其他
[003]吐槽 [004]戦う
[005]萌える
请选择文件夹:1
请输入模式(a或者d):a
所选文件夹是,请输入新文件夹名:comic 我翻看了一下f:\视频\中的文件夹,没有comic文件夹,是不是建立文件夹错了呢?
指定的路径无效
移动了 0个文件
视频文件:[KTXP&DYMY][Kamisama Dolls][01][GB][RV10].rmvb
[001]canner [002]其他
[003]吐槽 [004]戦う
[005]萌える
请选择文件夹:1
请输入模式(a或者d):d
视频文件:[KTXP&DYMY][Kamisama Dolls][01][GB][RV10].rmvb
[001]F:\download\FZGLJ [002]F:\download\kamidori
[003]F:\download\kamidori[004]F:\download\Webラジオ あ
[005]F:\download\[110422][006]F:\download\[EAC] [1 这里显示的是F:\download下的文件夹,不是f:\视频\*中的
[007]F:\download\[KTXP][M[008]F:\download\[R8-Audi
[009]F:\download\[WOLF★DM[010]F:\download\【動漫FANS字
请选择文件夹:1
所选文件夹是,请输入新文件夹名:comic
指定的路径无效
移动了 0个文件
大概就是以上的问题,又要麻烦您了.....
作者: ArdentMan 时间: 2011-7-8 18:49
本帖最后由 ArdentMan 于 2011-7-8 20:23 编辑
出错是因为Str变量的值没有得到传递,想了很多办法也不行,只好用个临时文件tem了- @Echo Off&SetLocal EnableDelayedExpansion
- For /R %%a In (*.mp4 *.rmvb) Do (
- Set "Str=%%~nxa"&Set "Flag="
- For /F "Delims=" %%b In ('Dir /ad /b /s F:\视频') Do (
- If Not Defined Flag (
- Set "Var=%%~nb"
- For %%c In ("!Var!") Do If "!Str:%%~c=!" NEQ "!Str!" If "!Var:~4!" NEQ "" Set "Flag=a"
- For %%c In ("!Str!") Do If "!Var:%%~c=!" NEQ "!Var!" If "!Str:~4!" NEQ "" Set "Flag=a"
- If Defined Flag Move "%%a" "%%b\"
- )
- )
- If Not Defined Flag (
- SetLocal&Cls
- Echo 视频文件:%%~nxa&Echo,
- For /f "Delims=" %%b In ('Dir /ad /b F:\视频') Do (
- Set /A Num+=1,Number+=1&Set ".!Num!=F:\视频\%%b"
- Set "Str=000!Num!"&Set "Var=%%b "
- Set /P=[!Str:~-3!]!Var:~,20!<nul
- If "!Number!" EQU "2" Echo,&Set /A Number=0
- )
- Echo,&Set "Str="&Set /P Str=请选择文件夹:
- For %%b in (!Str!) do Echo !.%%b!>tem
- EndLocal
- Set /p Str=<tem&Del tem
- Echo,&Set "Var="&Set /P Var=请输入模式(A或者D):
- If /i "!Var!" EQU "D" (
- SetLocal&Cls
- Echo 视频文件:%%~nxa&Echo,
- For /F "Delims=" %%b In ('Dir /s /ad /b "!Str!"') Do (
- Set /A Num+=1,Number+=1&Set ".!Num!=%%b"
- Set "Str1=000!Num!"&Set "Var=%%b "
- Set /P=[!Str1:~-3!]!Var:~,20!<nul
- If "!Number!" EQU "2" Echo,&Set /A Number=0
- )
- Echo,&Set "Str="&Set /P Str=请选择文件夹:
- For %%b in (!Str!) do Echo !.%%b!>tem
- EndLocal
- Set /p Str=<tem&Del tem
- )
- Cls&Set /P Name=所选文件夹是!Str!,请输入新文件夹名:
- If Not Exist "!Str!\!Name!" Md "!Str!\!Name!"
- Move "%%a" "!Str!\!Name!\"
- )
- )
复制代码
作者: comicguests 时间: 2011-7-8 20:06
15# ArdentMan
所选文件夹是F:\视频\萌える,请输入新文件名:houxi
子目录或文件 F:\视频\萌える\ 已经存在。
视频移动到了F:\视频\萌える\下
并且没有huoxi文件夹....
拜托了,还有感谢
作者: ArdentMan 时间: 2011-7-8 20:09
本帖最后由 ArdentMan 于 2011-7-8 20:24 编辑
粗心了没有加上双引号,
同时用错了变量符合,
再试罗~~~~~~~
作者: comicguests 时间: 2011-7-8 20:49
15# ArdentMan
这次真的没问题了,再一次感谢!!
作者: Hello123World 时间: 2011-7-9 13:04
楼主的图做的真好,用什么软件做的?
作者: comicguests 时间: 2011-7-9 17:42
19# Hello123World
er.....
用很多软件都能做,我用的是photoshop...
毕竟这个是专业之一...
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |