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

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

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

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

TOP

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

TOP

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

9# comicguests

再试一次,

如还不行,

那没办法了,

你这个本来就很繁杂,

加上你一点都不会调试,

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

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

本帖最后由 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

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

粗心了没有加上双引号,

同时用错了变量符合,

再试罗~~~~~~~
一路飘过的鸟~~~

TOP

返回列表