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

[文件操作] 怎样对文件名过滤,拖动到批处理后分类移动?

相当于一个过滤归类器,要拖动,是因为文件夹内并不是所有的文件都需要进行操作
我自己做了个,代码支持拖动,但是
1.在处理括号时,批处理闪断
我已经加了对括号的处理了
2.数量多时,好像也不行,要分多次操作,而最终结果是:多次拖动每个文件都能正确分类
我就纳闷什么原因导致中间中断,代码已经检查好长时间了
3.在运行结束至最后空内容时,跳转标签“cao”总是提示不是内部命令,换别的标签也是
倒~~~~~~

特此求助大神相助
  1. @echo off
  2. :sub
  3. if not exist %1 goto cao
  4. set str=%~n1
  5. set str=%str:(=%
  6. set str=%str:)=%
  7. cd /d %~dp0
  8. cd..
  9. set "k=%cd%"
  10. ::判断
  11. (echo %str%|findstr /c:"建筑")||(echo %str%|findstr /c:"土建")
  12. if %errorlevel%==0 goto construction
  13. echo %str%|findstr /c:"总图"
  14. if %errorlevel%==0 goto general
  15. echo %str%|findstr /c:"管道"
  16. if %errorlevel%==0 goto pipe
  17. echo %str%|findstr /c:"设备"
  18. if %errorlevel%==0 goto equipment
  19. (echo %str%|findstr /c:"工艺")||(echo %str%|findstr /c:"流程")
  20. if %errorlevel%==0 goto process
  21. goto failure
  22. :construction
  23. move %1 "%k%\土建\"
  24. if %errorlevel%==0 (echo %~n1已归入 ^<土建^> 文件夹>>move_log.txt&shift/1 &goto sub)
  25. :general
  26. move %1 "%k%\总图\"
  27. if %errorlevel%==0 (echo %~n1已归入 ^<总图^> 文件夹>>move_log.txt&shift/1 &goto sub)
  28. :process
  29. move %1 "%k%\工艺流程图\"
  30. if %errorlevel%==0 (echo %~n1已归入 ^<工艺流程图^> 文件夹>>move_log.txt&shift/1 &goto sub)
  31. :equipment
  32. move %1 "%k%\设备\"
  33. if %errorlevel%==0 (echo %~n1已归入 ^<设备^> 文件夹>>move_log.txt&shift/1 &goto sub)
  34. :pipe
  35. move %1 "%k%\管道\"
  36. if %errorlevel%==0 (echo %~n1已归入 ^<管道^> 文件夹>>move_log.txt&shift/1 &goto sub)
  37. :failure
  38. echo 未成功归类 %~n1
  39. shift/1
  40. goto sub
  41. :cao
  42. echo 归档结束
  43. pause
复制代码
列出部分文件吧:
  1. F:\批处理\最新资料 的目录
  2. tmp.txt
  3. 20120703消毒剂分厂车间.dwg
  4. 手动文档归类.cmd
  5. 批量-自动文档归类.cmd
  6. 自动文档归类.cmd
  7. 20120703总图(REV0).dwg
  8. 20120619总图(次钠搬迁).dwg
  9. 土建图0629.dwg
  10. 20120627消毒剂分厂车间(建筑图).dwg
  11. 泵机土建条件图.dwg
  12. 土建图0618.dwg
  13. 土建图0620.dwg
  14. 搬迁项目设备一览表.doc
  15. 20120629H-11050-4-1~12 设备平立面布置图.dwg
  16. 流程设备888数量.txt
  17. 设备平面布置图.dwg
  18. 管道平面布置图0618.dwg
  19. 流程图初版.dwg
  20. 20120629H-12030-3- 带控制点工艺流程图.dwg
复制代码

1.因为if %errorlevel%==0 (echo %~n1已归入...)本身带有括号,如果%~n1中也包含括号,就会出现语法错误。将%~n1用引号包围就可以了。
3.如果%1为空值,if not exist %1 goto cao这句变成:如果不存在goto,执行cao,哈哈。。。
改成if "%~1"=="" goto cao就可以了。

TOP

闪断了我就没法看到过程了,就忽视了
看来还是需要把闪断时的变量代入分析下啊
╮(╯▽╰)╭
谢大神

回复 2# apang

TOP

返回列表