找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 72776|回复: 19

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

[复制链接]
发表于 2011-7-7 13:04:42 | 显示全部楼层 |阅读模式
之前发帖有人说我表达不太清楚,所以我就做了个流程图(大概)
请各位高手帮忙看一下,
我还只是菜鸟,请多关照!
图挂了的话,点我

评分

参与人数 1PB -2 收起 理由
Batcher -2 重复发帖

查看全部评分

发表于 2011-7-7 15:54:27 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
comicguests + 1 再次感谢

查看全部评分

 楼主| 发表于 2011-7-7 16:13:11 | 显示全部楼层
2# ArdentMan
感谢您的回复,但我运行了一下后,闪了一下批处理窗口就退出了,我是win7旗舰版,
或者说 需要某些第三方程序?
再次感谢!!!
发表于 2011-7-7 16:15:44 | 显示全部楼层
发表于 2011-7-7 16:21:33 | 显示全部楼层
本帖最后由 ArdentMan 于 2011-7-7 16:51 编辑

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

实在是很繁杂~~~~
 楼主| 发表于 2011-7-7 20:43:38 | 显示全部楼层
4# Demon


虽然重发帖不好,但那个无人问津了
而且,再改就太长了,放弃
....还是有点区别的....
 楼主| 发表于 2011-7-7 20:55:33 | 显示全部楼层
5# ArdentMan


真的是非常感谢,可还是晃一下就关闭了...
难道就我的电脑这样么....
您的电脑不闪么?
发表于 2011-7-7 21:07:51 | 显示全部楼层
7# comicguests
再次检查代码少了两个& 再运行
 楼主| 发表于 2011-7-8 08:51:58 | 显示全部楼层
8# ArdentMan


还是闪了就没啊...(╯﹏╰)
发表于 2011-7-8 09:06:15 | 显示全部楼层
本帖最后由 ArdentMan 于 2011-7-8 09:10 编辑

9# comicguests

再试一次,

如还不行,

那没办法了,

你这个本来就很繁杂,

加上你一点都不会调试,

别人不可能自己先构造出一个测试环境吧?
 楼主| 发表于 2011-7-8 10:44:21 | 显示全部楼层
本帖最后由 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个才可以移动呢?

再次感谢!!
发表于 2011-7-8 11:42:17 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
comicguests + 1 完美解决问题!感谢

查看全部评分

 楼主| 发表于 2011-7-8 17:10:02 | 显示全部楼层
12# ArdentMan


感谢,非常感谢,非常非常感谢!!
 楼主| 发表于 2011-7-8 17:51:26 | 显示全部楼层
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个文件


大概就是以上的问题,又要麻烦您了.....
发表于 2011-7-8 18:49:00 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
comicguests + 1 感谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 17:17 , Processed in 0.023577 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表