Board logo

标题: [文件操作] [求助]FOR循环的文件遍历问题 [打印本页]

作者: li547471962    时间: 2015-2-22 23:25     标题: [求助]FOR循环的文件遍历问题

大致功能是实现筛选文件的。
如 1 功能是 文件夹下若有123.cr2 无 123.jpg 则删除123.cr2
2功能 移动文件夹下所有.cr2文件到CR2文件夹
3功能 移动没有对应.jpg文件的.cr2文件
4退出。
那么问题来了。

遍历时会涉及到了子文件夹的情况(FOR /R参数会遍历子目录)

理想状态是  操作都是只针对BAT文件所在根文件夹而不涉及子文件夹 即,FOR循环只遍历根目录不遍历子目录。

问一下用什么参数或者语句解决?
希望得到解决!谢谢各位了!Q547471962


代码有点乱 多多包涵!


-------------------------------------------------------------------------------------------------------
  1. :INPUT
  2. cls
  3. @echo off
  4. @echo.
  5. @echo [1] 删除无JPG的CR2
  6. @ECHO [2] 移动所有CR2到新建文件夹
  7. @ECHO [3] 筛选无JPG的CR2
  8. @ECHO [4] 退出
  9. @echo.
  10. @echo.
  11. set /p x=  请输入:
  12. If "%x%"=="1" goto :delet
  13. If "%x%"=="2" goto :mov
  14. If "%x%"=="3" goto :shaixuan
  15. If "%x%"=="4" goto :end
  16. :shaixuan
  17. if not "%~1"=="" CD /D "%~1"
  18. for /R %%F in (*.cr2) do (
  19.     call :mov2 "%%F")
  20. @echo.
  21. @echo.
  22. @echo finish_move!
  23. @echo.
  24. @echo.
  25. pause
  26. goto :input
  27. :mov2
  28. IF NOT EXIST 单CR2 md 单CR2
  29. if not exist "%~dpn1.jpg" %DEBUG% move "%~1" 单CR2
  30. goto :end
  31. :delet
  32. @echo off
  33. REM set DEBUG=echo
  34. if not "%~1"=="" CD /D "%~1"
  35. for /R %%F in (*.cr2) do (
  36.     call :delraw "%%F")
  37. )
  38. @echo.
  39. @echo.
  40. @echo finish_delete!
  41. @echo.
  42. @echo.
  43. pause
  44. goto :input
  45. :delraw
  46. if not exist "%~dpn1.jpg" %DEBUG% del /q /f "%~1"
  47. goto :end
  48. :mov
  49. @echo off
  50. md CR2
  51. move *.cr2 cr2
  52. @echo.
  53. @echo.
  54. @echo finish move!
  55. @echo.
  56. @echo.
  57. pause
  58. goto input
  59. :end
复制代码
-------------------------------------------------------------------------------------------------------
作者: CrLf    时间: 2015-2-23 00:27

for /R %%F in (*.cr2) do ... 是遍历子目录
for %%F in (*.cr2) do ... 是不遍历子目录




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2