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

[文件操作] [已解决]批处理怎样查找本目录下视频文件,按文件名移动到对应文件夹?

之前发帖有人说我表达不太清楚,所以我就做了个流程图(大概)
请各位高手帮忙看一下,
我还只是菜鸟,请多关照!
图挂了的话,点我
1

评分人数

本帖最后由 ArdentMan 于 2011-7-8 09:09 编辑
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For /R %%a In (*.mp4 *.rmvb) Do (
  3.   Set "Str=%%~nxa"&Set "Flag="
  4.   For /F "Delims=" %%b In ('Dir /ad /b /s F:\视频') Do (
  5.     If Not Defined Flag (
  6.       Set "Var=%%~nb"
  7.       For %%c In ("!Var!") Do If "!Str:%%~c=!" NEQ "!Str!" Set "Flag=a"
  8.       For %%c In ("!Str!") Do If "!Var:%%~c=!" NEQ "!Var!" Set "Flag=a"
  9.       If Defined Flag Move "%%a" "%%b\"
  10.     )
  11.   )
  12.   If Not Defined Flag (
  13.     SetLocal&Cls
  14.     For /f "Delims=" %%b In ('Dir /ad /b F:\视频') Do (
  15.       Set /A Num+=1,Number+=1&Set ".!Num!=F:\视频\%%b"
  16.       Set "Str=000!Num!"&Set "Var=%%b                    "
  17.       Set /P=[!Str:~-3!]!Var:~,20!<nul
  18.       If "!Number!" EQU "2" Echo,&Set /A Number=0
  19.     )
  20.     Echo,&Set "Str="&Set /P Str=请选择文件夹:
  21.     EndLocal&For %%b In ("!Str!") Do Set "Str=!.%%~b!"
  22.     Echo,&Set "Var="&Set /P Var=请输入模式(A或者D):
  23.     If /i "!Var!" EQU "D" (
  24.       SetLocal&Cls
  25.       For /F "Delims=" %%b In ('Dir /s /ad /b "!Str!"') Do (
  26.         Set /A Num+=1,Number+=1&Set ".!Num!=%%b"
  27.         Set "Str1=000!Num!"&Set "Var=%%b                    "
  28.         Set /P=[!Str1:~-3!]!Var:~,20!<nul
  29.         If "!Number!" EQU "2" Echo,&Set /A Number=0
  30.       )
  31.       Echo,&Set "Str="&Set /P Str=请选择文件夹:
  32.       EndLocal&For %%b In ("!Str!") Do Set "Str=!.%%~b!"
  33.     )  
  34.     Cls&Set /P Name=所选文件夹是!Str!,请输入新文件夹名:
  35.     Move "%%a" "!Str!\%Name%\"
  36.   )  
  37. )
复制代码
1

评分人数

一路飘过的鸟~~~

TOP

2# ArdentMan
感谢您的回复,但我运行了一下后,闪了一下批处理窗口就退出了,我是win7旗舰版,
或者说 需要某些第三方程序?
再次感谢!!!

TOP

TOP

本帖最后由 ArdentMan 于 2011-7-7 16:51 编辑

3# comicguests
代码已修改再运行下看,

实在是很繁杂~~~~
一路飘过的鸟~~~

TOP

4# Demon


虽然重发帖不好,但那个无人问津了
而且,再改就太长了,放弃
....还是有点区别的....

TOP

5# ArdentMan


真的是非常感谢,可还是晃一下就关闭了...
难道就我的电脑这样么....
您的电脑不闪么?

TOP

7# comicguests
再次检查代码少了两个& 再运行
一路飘过的鸟~~~

TOP

8# ArdentMan


还是闪了就没啊...(╯﹏╰)

TOP

本帖最后由 ArdentMan 于 2011-7-8 09:10 编辑

9# comicguests

再试一次,

如还不行,

那没办法了,

你这个本来就很繁杂,

加上你一点都不会调试,

别人不可能自己先构造出一个测试环境吧?
一路飘过的鸟~~~

TOP

本帖最后由 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个才可以移动呢?

再次感谢!!

TOP

本帖最后由 ArdentMan 于 2011-7-8 12:33 编辑
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For /R %%a In (*.mp4 *.rmvb) Do (
  3.   Set "Str=%%~nxa"&Set "Flag="
  4.   For /F "Delims=" %%b In ('Dir /ad /b /s F:\视频') Do (
  5.     If Not Defined Flag (
  6.       Set "Var=%%~nb"
  7.       For %%c In ("!Var!") Do If "!Str:%%~c=!" NEQ "!Str!" If "!Var:~4!" NEQ "" Set "Flag=a"
  8.       For %%c In ("!Str!") Do If "!Var:%%~c=!" NEQ "!Var!" If "!Str:~4!" NEQ "" Set "Flag=a"
  9.       If Defined Flag Move "%%a" "%%b\"
  10.     )
  11.   )
  12.   If Not Defined Flag (
  13.     SetLocal&Cls
  14.     Echo 视频文件:%%~nxa&Echo,
  15.     For /f "Delims=" %%b In ('Dir /ad /b F:\视频') Do (
  16.       Set /A Num+=1,Number+=1&Set ".!Num!=F:\视频\%%b"
  17.       Set "Str=000!Num!"&Set "Var=%%b                    "
  18.       Set /P=[!Str:~-3!]!Var:~,20!<nul
  19.       If "!Number!" EQU "2" Echo,&Set /A Number=0
  20.     )
  21.     Echo,&Set "Str="&Set /P Str=请选择文件夹:
  22.     EndLocal&For %%b In ("!Str!") Do Set "Str=!.%%~b!"
  23.     Echo,&Set "Var="&Set /P Var=请输入模式(A或者D):
  24.     If /i "!Var!" EQU "D" (
  25.       SetLocal&Cls
  26.       Echo 视频文件:%%~nxa&Echo,
  27.       For /F "Delims=" %%b In ('Dir /s /ad /b "!Str!"') Do (
  28.         Set /A Num+=1,Number+=1&Set ".!Num!=%%b"
  29.         Set "Str1=000!Num!"&Set "Var=%%b                    "
  30.         Set /P=[!Str1:~-3!]!Var:~,20!<nul
  31.         If "!Number!" EQU "2" Echo,&Set /A Number=0
  32.       )
  33.       Echo,&Set "Str="&Set /P Str=请选择文件夹:
  34.       EndLocal&For %%b In ("!Str!") Do Set "Str=!.%%~b!"
  35.     )  
  36.     Cls&Set /P Name=所选文件夹是!Str!,请输入新文件夹名:
  37.     Move "%%a" "!Str!\%Name%\"
  38.   )  
  39. )
复制代码
  模糊匹配很难,很难,很难!!!
1

评分人数

一路飘过的鸟~~~

TOP

12# ArdentMan


感谢,非常感谢,非常非常感谢!!

TOP

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个文件


大概就是以上的问题,又要麻烦您了.....

TOP

本帖最后由 ArdentMan 于 2011-7-8 20:23 编辑

出错是因为Str变量的值没有得到传递,想了很多办法也不行,只好用个临时文件tem了
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For /R %%a In (*.mp4 *.rmvb) Do (
  3.   Set "Str=%%~nxa"&Set "Flag="
  4.   For /F "Delims=" %%b In ('Dir /ad /b /s F:\视频') Do (
  5.     If Not Defined Flag (
  6.       Set "Var=%%~nb"
  7.       For %%c In ("!Var!") Do If "!Str:%%~c=!" NEQ "!Str!" If "!Var:~4!" NEQ "" Set "Flag=a"
  8.       For %%c In ("!Str!") Do If "!Var:%%~c=!" NEQ "!Var!" If "!Str:~4!" NEQ "" Set "Flag=a"
  9.       If Defined Flag Move "%%a" "%%b\"
  10.     )
  11.   )
  12.   If Not Defined Flag (
  13.     SetLocal&Cls
  14.     Echo 视频文件:%%~nxa&Echo,
  15.     For /f "Delims=" %%b In ('Dir /ad /b F:\视频') Do (
  16.       Set /A Num+=1,Number+=1&Set ".!Num!=F:\视频\%%b"
  17.       Set "Str=000!Num!"&Set "Var=%%b                    "
  18.       Set /P=[!Str:~-3!]!Var:~,20!<nul
  19.       If "!Number!" EQU "2" Echo,&Set /A Number=0
  20.     )
  21.     Echo,&Set "Str="&Set /P Str=请选择文件夹:
  22.     For %%b in (!Str!) do Echo !.%%b!>tem
  23.     EndLocal
  24.     Set /p Str=<tem&Del tem
  25.     Echo,&Set "Var="&Set /P Var=请输入模式(A或者D):
  26.     If /i "!Var!" EQU "D" (
  27.       SetLocal&Cls
  28.       Echo 视频文件:%%~nxa&Echo,
  29.       For /F "Delims=" %%b In ('Dir /s /ad /b "!Str!"') Do (
  30.         Set /A Num+=1,Number+=1&Set ".!Num!=%%b"
  31.         Set "Str1=000!Num!"&Set "Var=%%b                    "
  32.         Set /P=[!Str1:~-3!]!Var:~,20!<nul
  33.         If "!Number!" EQU "2" Echo,&Set /A Number=0
  34.       )
  35.       Echo,&Set "Str="&Set /P Str=请选择文件夹:
  36.       For %%b in (!Str!) do Echo !.%%b!>tem
  37.       EndLocal
  38.       Set /p Str=<tem&Del tem
  39.     )  
  40.     Cls&Set /P Name=所选文件夹是!Str!,请输入新文件夹名:
  41.     If Not Exist "!Str!\!Name!" Md "!Str!\!Name!"
  42.     Move "%%a" "!Str!\!Name!\"
  43.   )  
  44. )
复制代码
1

评分人数

一路飘过的鸟~~~

TOP

返回列表