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

[文件操作] 新手求助,批处理U盘在工作中的实际应用

本帖最后由 hxj520cyx 于 2013-3-6 17:24 编辑

问题条件描述:
1.我需要拷贝大量U盘(CF卡,数量巨大)
2.拷贝的数据是单文件4G左右。
3.在拷贝时使用了一些外部设备,能达到同时拷贝20张U盘,因为受英文字母限制,所以也没办法再增加这个数量(可以手动分配更多U盘,但工作效率慢,而且复制速率总量受限,所以每次复制20张U盘)。
4.我使用的是win8 64位系统。

经过两天摸索,在各大DOS论坛找了许多资料,自己借用几位前辈写的批处,弄了一个能基本达到前面目的的批处理,分为两段,如下:
  1. @mode con cols=80 lines=25
  2. @echo off
  3. color 3e
  4. :start
  5. cls
  6. title       U Disk Tools     
  7. echo.
  8. echo.
  9. echo.
  10. echo         ==============================================================
  11. echo.
  12. echo                           批量U盘格式化复制程序
  13. echo.
  14. echo.
  15. echo.
  16. echo                            [1] 格式化并复制文件
  17. echo.                              
  18. echo                            [2] 使用说明书
  19. echo.
  20. echo                            [3] 数字3关闭窗口
  21. echo.
  22. echo.
  23. echo.
  24. echo.
  25. echo         ==============================================================
  26. echo.
  27. set /p choice=请输入:
  28. if {%choice%}=={} goto start
  29. if /i %choice%==1 goto open
  30. if /i %choice%==2 goto help
  31. if /i %choice%==3 goto shut
  32. goto start
  33. rem ===========================test==============================
  34. :open
  35. cls
  36. @ echo off&setlocal EnableDelayedExpansion
  37. set a=0
  38. for %%i in (z y x w v u t s r q p o n m l k i j h g f e d) do (
  39. fsutil fsinfo drivetype %%i: | findstr "可移动" >nul 2>nul && (set /a a=!a!+1&&echo 检测到第!a!个优盘%%i)&& start /min cmd /c work.bat %%i
  40. )
  41. echo.
  42. goto start
  43. rem ==============================程序结束=============================
  44. :help
  45. rem ==============================使用帮助=============================
  46. cls
  47. echo.
  48. echo.               
  49. echo.
  50. echo.
  51. echo.
  52. echo   本程序写于DOS,难免有冲突,因此造成的一切损失,本人概不负责.
  53. echo.
  54. echo   使用方法: 1  数字键1运行格式化所有U盘,并复制指定文件到U盘。
  55. echo             2  数字键2查看本文本。
  56. echo             3  修改U盘格式,请于work.bat文件内修改。
  57. echo             4  修改指定文件,同在work.bat文件内。
  58. echo             5  U Disk Tools.bat和work.bat文件必需放在同一文件夹内。
  59. echo             6  请确保U盘有足够空间。
  60. echo             7  谢谢!
  61. echo.
  62. echo    本软件为免费软件欢迎大家使用
  63. echo.
  64. echo.
  65. echo    按任意键返回主菜单
  66. pause >nul
  67. goto start
  68. rem ==============================程序结束=============================
复制代码
第二段的批处理文件名为work.bat  因为在第一段中已经指定该文件名
  1. format /fs:fat32 /q /y %1: && xcopy D:\TDDOWNLOAD\Hash.exe /Y %1:
  2. goto shut
复制代码
现在的问题是我想把这两段批处理写在一个里面,尝试了几次都没成功,有大大能帮助一下吗?

另外,这个批处理有个问题,无法弹出U盘,看了许多资料,提到使用devcon.exe,我下载64位的,但没能在win8 64位系统里成功运行,但32位可以运行,不知道为啥(但不会用......)。还有前辈指出可以用关闭explorer来实现,我觉得会影响其他程序,因此没采用。

恳请大大帮忙解决一下我的小问题,由于是小白,只懂基本的DOS命令,希望大大不吝赐教。
再次感谢!

别太快沉掉,周末快到了,又要负责卡了,雷

TOP

  1. @mode con cols=80 lines=25
  2. @echo off
  3. color 3e
  4. :start
  5. cls
  6. title       U Disk Tools     
  7. echo.
  8. echo.
  9. echo.
  10. echo         ==============================================================
  11. echo.
  12. echo                           批量U盘格式化复制程序
  13. echo.
  14. echo.
  15. echo.
  16. echo                            [1] 格式化并复制文件
  17. echo.                              
  18. echo                            [2] 使用说明书
  19. echo.
  20. echo                            [3] 数字3关闭窗口
  21. echo.
  22. echo.
  23. echo.
  24. echo.
  25. echo         ==============================================================
  26. echo.
  27. set /p choice=请输入:
  28. if {%choice%}=={} goto start
  29. if /i %choice%==1 goto open
  30. if /i %choice%==2 goto help
  31. if /i %choice%==3 goto shut
  32. goto start
  33. rem ===========================test==============================
  34. :open
  35. cls
  36. @ echo off&setlocal EnableDelayedExpansion
  37. set a=0
  38. for %%i in (z y x w v u t s r q p o n m l k i j h g f e d) do (
  39.     fsutil fsinfo drivetype %%i: | findstr "可移动" >nul 2>nul || goto :eof
  40.     set /a a=!a!+1
  41.     echo 检测到第!a!个优盘%%i
  42.     REM start /min cmd /c work.bat %%i
  43.     format /fs:fat32 /q /y %%i:
  44.     xcopy D:\TDDOWNLOAD\Hash.exe /Y %%i:
  45. )
  46. echo.
  47. goto start
  48. rem ==============================程序结束=============================
  49. :help
  50. rem ==============================使用帮助=============================
  51. cls
  52. echo.
  53. echo.               
  54. echo.
  55. echo.
  56. echo.
  57. echo   本程序写于DOS,难免有冲突,因此造成的一切损失,本人概不负责.
  58. echo.
  59. echo   使用方法: 1  数字键1运行格式化所有U盘,并复制指定文件到U盘。
  60. echo             2  数字键2查看本文本。
  61. echo             3  修改U盘格式,请于work.bat文件内修改。
  62. echo             4  修改指定文件,同在work.bat文件内。
  63. echo             5  U Disk Tools.bat和work.bat文件必需放在同一文件夹内。
  64. echo             6  请确保U盘有足够空间。
  65. echo             7  谢谢!
  66. echo.
  67. echo    本软件为免费软件欢迎大家使用
  68. echo.
  69. echo.
  70. echo    按任意键返回主菜单
  71. pause >nul
  72. goto start
  73. rem ==============================程序结束=============================
复制代码

TOP

大哥,别忽悠我啊;
    REM start /min cmd /c work.bat %%i
    format /fs:fat32 /q /y %%i:
    xcopy D:\TDDOWNLOAD\Hash.exe /Y %%i:
你这明显是先执行work.bat,那会去执行下面的。明显行不通啊。

TOP

去测试了一下,直接关闭窗口,没任何作用,删掉REM start /min cmd /c work.bat %%i
也不管用~~~!

TOP

没有接触过这种神人的工作,恕无法援手!~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

open段这样试呢
  1. :open
  2. cls
  3. setlocal EnableDelayedExpansion
  4. set a=0
  5. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do (
  6.     set /a a+=1&&echo 检测到第!a!个优盘%%i
  7.     start /wait format /fs:fat32 /q /y %%i
  8.     xcopy D:\TDDOWNLOAD\Hash.exe /Y %%i
  9. )
  10. echo.
  11. goto start
复制代码

TOP

terse大,感谢你的回复!
测试有效,就是格式化复制是按一个一个U盘来的,不是同时进行。
能否改成同时进行的呢?

再次感谢你的帮助

TOP

terse大,感谢你的回复!
测试有效,就是格式化复制是按一个一个U盘来的,不是同时进行。
能否改成同时进 ...
hxj520cyx 发表于 2013-3-7 13:03

去掉 start /wait 后面改为  试下呢
  1. format /fs:fat32 /q /y %%i && xcopy D:\TDDOWNLOAD\Hash.exe /Y %%i
复制代码

TOP

terse大,非常感谢你能抽出时间帮助我。
跟据你的提示我修改之后依然是依次格式化复制,并未同时进行,我找了另外一个方法,利用bat2exe软件把两个文件同时写进一个exe里,原来的问题解决了。但问题也跟着来了(大大可能会嫌烦了,不过这个问题应该很简单,恳请帮助一下)。

现在指定的复制文件路径是固定的,除非文本方式修改work.bat文件。能不能在第一个批处理中加入一个选项,可以填写“D:\TDDOWNLOAD\Hash.exe ”这一段。

TOP

返回列表