本帖最后由 hxj520cyx 于 2013-3-6 17:24 编辑
问题条件描述:
1.我需要拷贝大量U盘(CF卡,数量巨大)
2.拷贝的数据是单文件4G左右。
3.在拷贝时使用了一些外部设备,能达到同时拷贝20张U盘,因为受英文字母限制,所以也没办法再增加这个数量(可以手动分配更多U盘,但工作效率慢,而且复制速率总量受限,所以每次复制20张U盘)。
4.我使用的是win8 64位系统。
经过两天摸索,在各大DOS论坛找了许多资料,自己借用几位前辈写的批处,弄了一个能基本达到前面目的的批处理,分为两段,如下:- @mode con cols=80 lines=25
- @echo off
- color 3e
- :start
- cls
- title U Disk Tools
- echo.
- echo.
- echo.
- echo ==============================================================
- echo.
- echo 批量U盘格式化复制程序
- echo.
- echo.
- echo.
- echo [1] 格式化并复制文件
- echo.
- echo [2] 使用说明书
- echo.
- echo [3] 数字3关闭窗口
- echo.
- echo.
- echo.
- echo.
- echo ==============================================================
- echo.
- set /p choice=请输入:
- if {%choice%}=={} goto start
- if /i %choice%==1 goto open
- if /i %choice%==2 goto help
- if /i %choice%==3 goto shut
- goto start
-
- rem ===========================test==============================
- :open
- cls
- @ echo off&setlocal EnableDelayedExpansion
-
- set a=0
-
- 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 (
-
- fsutil fsinfo drivetype %%i: | findstr "可移动" >nul 2>nul && (set /a a=!a!+1&&echo 检测到第!a!个优盘%%i)&& start /min cmd /c work.bat %%i
-
-
- )
- echo.
- goto start
- rem ==============================程序结束=============================
-
-
- :help
- rem ==============================使用帮助=============================
- cls
- echo.
- echo.
- echo.
- echo.
- echo.
- echo 本程序写于DOS,难免有冲突,因此造成的一切损失,本人概不负责.
- echo.
- echo 使用方法: 1 数字键1运行格式化所有U盘,并复制指定文件到U盘。
- echo 2 数字键2查看本文本。
- echo 3 修改U盘格式,请于work.bat文件内修改。
- echo 4 修改指定文件,同在work.bat文件内。
- echo 5 U Disk Tools.bat和work.bat文件必需放在同一文件夹内。
- echo 6 请确保U盘有足够空间。
- echo 7 谢谢!
- echo.
- echo 本软件为免费软件欢迎大家使用
- echo.
- echo.
- echo 按任意键返回主菜单
- pause >nul
- goto start
- rem ==============================程序结束=============================
复制代码 第二段的批处理文件名为work.bat 因为在第一段中已经指定该文件名- format /fs:fat32 /q /y %1: && xcopy D:\TDDOWNLOAD\Hash.exe /Y %1:
- goto shut
复制代码 现在的问题是我想把这两段批处理写在一个里面,尝试了几次都没成功,有大大能帮助一下吗?
另外,这个批处理有个问题,无法弹出U盘,看了许多资料,提到使用devcon.exe,我下载64位的,但没能在win8 64位系统里成功运行,但32位可以运行,不知道为啥(但不会用......)。还有前辈指出可以用关闭explorer来实现,我觉得会影响其他程序,因此没采用。
恳请大大帮忙解决一下我的小问题,由于是小白,只懂基本的DOS命令,希望大大不吝赐教。
再次感谢! |