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

TOP

  1. @echo off
  2. title 自动检测
  3. mode con: cols=40 lines=15
  4. setlocal enabledelayedexpansion
  5. set dr1=%cd%
  6. set dr2=%cd%\批处理临时文件夹
  7. if not exist 批处理临时文件夹 md 批处理临时文件夹
  8. cd /d %dr2%
  9. :again
  10. set num1=%num%
  11. for %%i in (I,J,K,L,M,N,O,P,Q,R ) do (
  12.     set m%%i=                   %%i:不存在或者没插好
  13. )
  14. del /q lieb.txt 2>nul
  15. call :xiezc
  16. set /a num=0
  17. wmic logicaldisk where "drivetype=2" get caption|find ":">>lieb.txt
  18. for /f  "skip=1 delims=:"  %%a in (lieb.txt) do (     
  19.     set /a num+=1   
  20.     if exist "%%axie.txt" (
  21.         for %%i in (I,J,K,L,M,N,O,P,Q,R ) do (
  22.             if "%%a" == "%%i" set m%%a=!num! :%%a:复制完毕卸载中!
  23.         )
  24.     )
  25.     call :jiestix %%a
  26.     if exist %%a:k.txt (
  27.         for %%i in (I,J,K,L,M,N,O,P,Q,R) do (
  28.             if "%%a" == "%%i" set m%%a=!num! :%%a:还在检查中!
  29.         )
  30.     )
  31.     if exist "%%a:t.txt"  (
  32.         for %%i in (I,J,K,L,M,N,O,P,Q,R) do (
  33.             if "%%a" == "%%i" set m%%a=!num! :%%a:复制数据中,请留意!
  34.         )
  35.     )  
  36.     if exist "%%a:o.txt"  (
  37.         for %%i in (I,J,K,L,M,N,O,P,Q,R) do (
  38.             if "%%a" == "%%i" set m%%a=!num! :%%a:复制已经结束,请注意!
  39.         )
  40.     )
  41.     if not exist "%%a:o.txt" (
  42.         if not exist "%%a:t.txt" (
  43.             if not exist "%%axie.txt" (  
  44.                 if not exist "%%a:k.txt" (
  45.                     set m%%a=!num! :%%a:符合盘,即将复制
  46.                     cd /d "%dr1%\批处理包"
  47.                     start /b %%a.bat
  48.                     cd /d %dr2%
  49.                 )
  50.             )
  51.         )
  52.     )
  53. )
  54. mode con: cols=40 lines=15
  55. color 0f
  56. echo         本次扫描共:!num!张卡
  57. echo         上次扫描共:%num1%张卡
  58. for %%i in (I,J,K,L,M,N,O,P,Q,R) do (
  59.     echo !m%%i!
  60. )
  61. echo    稍后重新扫描,请留意盘情况变化
  62. set /p=10秒<nul
  63. for /l %%i in (3 -1 0) do (
  64.     for /l %%j in (1 1 4) do (
  65.         set /p=<nul
  66.     )
  67.     if %%i lss 10 (
  68.         set /p=          0%%i秒<nul
  69.     ) else (
  70.         set /p=          %%i秒<nul
  71.     )
  72.     title %%i 秒后重新扫描~
  73.     ping 127.0.0.1 -n 2 >nul 2>nul
  74. )
  75. goto again
  76. goto :eof
  77. :xiez
  78. if exist "%1xie.txt" (
  79.     for %%i in ( I,J,K,L,M,N,O,P,Q,R ) do (
  80.         if "%1" == "%%i" set m%1=%1:复制完毕卸载中!
  81.     )
  82. )
  83. goto :eof
  84. :xiezc
  85. for %%i in (I,J,K,L,M,N,O,P,Q,R) do (
  86.     if exist "%%ixiecg.txt" del /q %%ixiecg.txt
  87. )
  88. goto :eof
  89. :jiestix
  90. if exist "%1:o.txt" (
  91.     cls
  92.     mode con: cols=30 lines=3
  93.     echo %1复制完成!
  94.     set /p=5秒<nul
  95.     for /l %%i in (1 -1 0) do (
  96.         for /l %%j in (1 1 3) do (
  97.             set /p=<nul
  98.         )
  99.         set /p=%%i秒<nul
  100.         color %%if
  101.         title %%i 秒后提醒结束
  102.         ping 127.0.0.1 -n 2 >nul 2>nul
  103.     )
  104. )
  105. goto :eof
复制代码

用start /b启动的代码是什么?贴出来看看是否存在影响效率的部分

TOP

  1. dir /ad-s-h /b h:|findstr /v "雪山飞狐"|findstr /v "轩辕"|findstr /v "修真">>d:mulu.txt
  2. for /f "delims=" %%i in (d:mulu.txt) do (
  3. for /d  /r "h:\%%i" %%j in (*妹妹*) do (
  4. ren "%%j" 哥哥
  5. )
复制代码


改成这样试试:
  1. for /f "delims=" %%i in ('dir /ad-s-h /b h: ^| findstr /v "雪山飞狐.* 轩辕.* 修真.*"') do (
  2.     pushd "h:\%%i"
  3.     for /d %%j in (*妹妹*) do (
  4.         ren "%%j" 哥哥
  5.     )
  6.     popd
  7. )
复制代码

TOP

回复 16# BAT-VBS

哦我原本用XIEz程序标识复制完毕卸载中直到卸载掉这个空档的盘的状态
xiezc是用来删除留下到电脑盘里文件,本来是调用的程序在卸载后删除的,最后发现有时候,发现批处理错了,直接关闭了批,所以那个卸载文件还留在盘里,他留在盘里直接导致下个卡插上没反应,反而提示卸载中,所以就调用XIEZc每次删除那个判断卸载的文件,但这样有时会把正在卸载的盘重新调用批处理,重复处理,但因为正忙别的几乎忘记这个啦,因为他发生的几率小,居然让我给忘记了,调试的时候没出现问题,所以就留那里
     谢谢提醒帮我想个法子吧,有什么可以判断我调用的批被人为终止,这个我现在还没找到呢,有时候判断出来结果,发现不对赶紧关闭,甚至造成电脑重启,郁闷啊

TOP

回复 18# BAT-VBS
聪明啊,我每次有CALL调用内部的,你用PUSHD ,我有个疑问,我一直觉得无论处理什么,尽量不在卡上大量扫描,甚至cd  /d 进入移动盘,我都会轻,浅,快,少地搜索下表层目录,赶紧退出,把目录存到电脑文档里,然后花费大量功夫解析后直接用DEL REN RD MD直接修改绝对路径,一减少对移动盘的伤害,现在的卡质量太坏,有好几次我把同事的卡P下,插上手机居然要格式化,插上电脑也的格式化,后来发现他们的卡有的是低速卡有的是垃圾卡,不经折腾,稍微批下,飞得格式化,我后来有手工处理,居然好了,我想是批大量读写他的卡,导致崩溃,所以才开始寻找高级的,以减少扫描,减少读写,特别是我现在用的复制命令:ROBOCOPY /S /PURGE 天啊,很方便,可惜他会扫描卡上的全部内容,虽然有镜像功能,省事可惜同事的卡都经不住考研啊

TOP

用start /b启动的代码是什么?贴出来看看是否存在影响效率的部分
BAT-VBS 发表于 2013-1-29 21:53

我本来是贴的,一看那么占网页不敢贴了,就改成TXT了

TOP

回复 19# kzppp


有什么可以判断我调用的批被人为终止

一般是通过进程号或者cmd窗口的标题来判断

TOP

回复 20# kzppp


我每次有CALL调用内部的,你用PUSHD

call是比较影响效率的

TOP

回复 21# kzppp


    顶楼有好几个txt,你start /b调用的是哪个?

TOP

返回列表