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

[文件操作] 全盘搜索文件的批处理代码 独自放在外面可以复制所以文件 和其他放在一起就不行

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p "zf=  输入字符(如 *.txt;a*.txt;???s.*):"
  4. set /p "lj=  设置你要备份的路径(如 c:\):"
  5. echo              正在全盘搜索......
  6. md "%lj%"
  7. for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
  8.     if exist %%a:\ (
  9.         for /f "tokens=*" %%i in ('dir /a /b /s "%%a:\%zf%"') do (
  10.             if exist "%lj%\%%~nxi" (
  11.                 call :GetNewName "%%~nxi"
  12.                 echo f | xcopy /h /y "%%i" "%lj%\!NewFile!"
  13.             ) else (
  14.                 xcopy /h /y "%%i" "%lj%\"
  15.             )
  16.         )
  17.     )
  18. )
  19. :GetNewName
  20. set "name=%~n1"
  21. set "ext=%~x1"
  22. set n=1
  23. :LoopName
  24. if exist "%lj%\%name%_!n!%ext%"  (
  25.    set /a n+=1
  26.    goto :LoopName
  27. )
  28. set NewFile=%name%_!n!%ext%
复制代码
上面的能运行 可是我把跟他其他的放在一起之后
  1. @ECHO off
  2. setlocal enabledelayedexpansion
  3. mode con cols=45 lines=30
  4. color 3f
  5. :ning
  6. title         作者:NingL   
  7. CLS
  8. ECHO.
  9. ECHO.   
  10. ECHO      如有建议请联系  QQ847988972   
  11. ECHO.      
  12. ECHO              主菜单
  13. ECHO          选择你需要的服务
  14. ECHO.
  15. ECHO.                                            
  16. ECHO          [1]文件搜索拷贝           
  17. ECHO.        
  18. ECHO          [2]搜索导出文件路径
  19. ECHO.      
  20. ECHO          [3]搜索删除      
  21. ECHO.     
  22. ECHO          [4]结束进程(不适合XP)
  23. ECHO.   
  24. ECHO          [0]退出
  25. ECHO.   
  26. ECHO.
  27. ECHO.   
  28.      
  29. set /p choice=    输入数字选择按[Enter]执行:
  30. if not "%choice%"=="" set choice=%choice%
  31. if /i "%choice%"=="1" goto liang
  32. if /i "%choice%"=="2" goto jie
  33. if /i "%choice%"=="3" goto aaaa
  34. if /i "%choice%"=="4" goto iiiii
  35. if /i "%choice%"=="0" exit
  36. goto ning
  37. :liang
  38. cls  
  39. ECHO.
  40. ECHO.   
  41. ECHO.
  42. ECHO            自己选择吧
  43. ECHO.                                            
  44. ECHO          [1]自定义搜索拷贝         
  45. ECHO.        
  46. ECHO          [2]常用文件拷贝
  47. ECHO.
  48. ECHO          [3]返回主菜单   
  49. ECHO.
  50. ECHO          [0]退出
  51. ECHO.   
  52. ECHO.
  53. set /p choice=    输入数字选择按[Enter]执行:
  54. if not "%choice%"=="" set choice=%choice%
  55. if /i "%choice%"=="1" goto zdy
  56. if /i "%choice%"=="2" goto sgs
  57. if /i "%choice%"=="3" goto ning
  58. if /i "%choice%"=="0" exit
  59. goto liang
  60. :zdy
  61. cls
  62. ECHO.
  63. ECHO.   
  64. ECHO                                ningl
  65. ECHO.   
  66. ECHO.                                            
  67. ECHO          [1]全盘搜索         
  68. ECHO.        
  69. ECHO          [2]自定义盘符
  70. ECHO.
  71. ECHO          [3]返回上一层   
  72. ECHO.   
  73. ECHO          [4]返回主菜单
  74. ECHO.
  75. ECHO          [0]退出
  76. ECHO.   
  77. ECHO.
  78. set /p choice=    输入数字选择按[Enter]执行:
  79. if not "%choice%"=="" set choice=%choice%
  80. if /i "%choice%"=="1" goto qpss
  81. if /i "%choice%"=="2" goto zdypf
  82. if /i "%choice%"=="3" goto liang
  83. if /i "%choice%"=="4" goto ning
  84. if /i "%choice%"=="0" exit
  85. goto liang
  86. :qpss
  87. cls
  88. setlocal enabledelayedexpansion
  89. set /p "zf=  输入字符(如 *.txt;a*.txt;???s.*):"
  90. set /p "lj=  设置你要备份的路径(如 c:\):"
  91. echo              正在全盘搜索......
  92. md "%lj%"
  93. for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
  94.     if exist %%a:\ (
  95.         for /f "tokens=*" %%i in ('dir /a /b /s "%%a:\%zf%"') do (
  96.             if exist "%lj%\%%~nxi" (
  97.                 call :GetNewName "%%~nxi"
  98.                 echo f | xcopy /h /y "%%i" "%lj%\!NewFile!"
  99.             ) else (
  100.                 xcopy /h /y "%%i" "%lj%\"
  101.             )
  102.         )
  103.     )
  104. )
  105. :GetNewName
  106. set "name=%~n1"
  107. set "ext=%~x1"
  108. set n=1
  109. :LoopName
  110. if exist "%lj%\%name%_!n!%ext%"  (
  111.    set /a n+=1
  112.    goto :LoopName
  113. )
  114. set NewFile=%name%_!n!%ext%
  115. pause>nul
  116. goto zdy
复制代码
搜索就不完全了

回复 3# 回家路上


    好了  谢谢

TOP

回复 7# DAIC


    还是不行

TOP

回复 6# 回家路上


    你的建议到底是什么嘛

TOP

回复 7# DAIC


    哦 我试试

TOP

回复 6# 回家路上


    我只学我需要的

TOP

回复 4# ningl


    移到红字那个地方

TOP

本帖最后由 回家路上 于 2015-9-30 10:25 编辑

我的建议你试了吗?。。。。。。
看我说怎么你那800多行脚本大量重复,也不把大段大段相同的东西抽取一下,原来不知道goto :eof,
eof估计意思是“end of file”。goto :eof 就是跳转到批处理文件结尾

DAIC都标红字你都看不到(⊙﹏⊙)b

另外,发脚本的话最好用code标签将其括起来,就会有像我上面的那种格式。特别是你发的这种大段的(中间还有文字叙述,猛一看我还以为就发了这么长一段代码呢)
http://www.bathome.net/viewthread.php?tid=404&highlight=code
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 3# 回家路上


    goto eof?  都没有eof啊

TOP

回复 2# DAIC

移到哪里?

TOP

  1. pause>nul
复制代码
改成
  1. goto :eof
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

goto zdy

:GetNewName
set "name=%~n1"
set "ext=%~x1"
set n=1
:LoopName
if exist "%lj%\%name%_!n!%ext%"  (
   set /a n+=1
   goto :LoopName
)
set NewFile=%name%_!n!%ext%
pause>nul

把 goto zdy 往上挪

TOP

返回列表