|
|
楼主 |
发表于 2009-10-14 11:58:36
|
显示全部楼层
批处理复制时间段内的文件并根究返回值判断是否OK
- @echo off
- set t=%time%
- :line
- set line=
- set /p line=请输入线别(01~10):
- if not "%line%" == "01" if not "%line%" == "02" if not "%line%" == "03" if not "%line%" == "04" if not "%line%" == "05" if not "%line%" == "06" if not "%line%" == "07" goto a
- if "%line%" == "Q" exit cmd
- echo 线别Y%line%
- :pcnum
- set pcnum=
- set /p pcnum=请输入电脑编号(1~6):
- if not "%pcnum%" == "1" if not "%pcnum%" == "2" if not "%pcnum%" == "3" if not "%pcnum%" == "4" if not "%pcnum%" == "5" if not "%pcnum%" == "6" goto b
- if "%pcnum%" == "Q" exit cmd
- echo 电脑编号%pcnum%
- set aa=
- set /a aa=2*%pcnum%-1
- set bb=
- set /a bb=2*%pcnum%
- rem 一个电脑编号对应两个设备编号
- :data
- set data=
- set /p data=请输入拷贝文件的月份(200907):
- echo 拷贝文件月份%data%
- :disk
- set disk=
- set /p disk=请输入复制后文件的盘符(C~E):
- if not "%disk%" == "C" if not "%disk%" == "d" if not "%disk%" == "e" goto c
- echo 盘符 %disk%
- title Y %line% L %pcnum%
- md %disk%:\WORK%data%\work%aa%
- md %disk%:\WORK%data%\work%bb%
- setlocal enabledelayedexpansion
- echo *********************%aa%*************************
- for /r \\Y%line%L%pcnum%\WORK%aa% %%a in (*.*) do (
- set var=%%~ta
- set var=!var:~0,4!!var:~5,2!
- IF !VAR! equ !data! xcopy "%%a" %disk%:\WORK%data%\work%aa%)
- if !errorlevel! equ 0 (echo OK) else (echo NG)
- echo ********************%bb%***********************
- for /r \\Y%line%L%pcnum%\WORK%bb% %%a in (*.*) do (
- set var=%%~ta
- set var=!var:~0,4!!var:~5,2!
- IF !VAR! equ !data! xcopy "%%a" %disk%:\WORK%data%\work%bb%)
- if !errorlevel! equ 0 (echo OK) else (echo NG)
- call :time0 "%t%" "%time%" "ok"
- echo.&echo 耗时: %ok%
- pause&exit
- :time0 以下为封装部分。
- :: code 随风 @bbs.bathone.cn 2008-08-15
- setlocal&set /a n=0
- for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
- set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
- set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100
- )
- set "n=%n:-=%"
- set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
- set "ok=%s% 小时 %f% 分钟 %m% 秒 %n% 毫秒"
- endlocal&set "%~3=%ok%"&goto :eof
- pause
- :a
- echo 输入错误 & goto line
- :b
- echo 输入错误 & goto pcnum
- :c
- echo 输入错误 & goto disk
复制代码
问题一 :
无论是否复制成功 ,都回显Ok ???希望复制OK就是OK,复制错误就是NG。
问题二:
以上例子我只是拷贝了两个文件夹 。假如我有work1到WORK144个文件夹,不会要写144个for语句来拷贝吧。希望有没有简洁一些的表示方法。。我这个程式过于繁琐 ,希望帮忙简化一些代码
问题三:
由于是联网拷贝,如果文件过多,将会导致执行程式 的速度过慢。假如有10000个文件在里面找200907的复制出来 ,速度会很慢很慢。。希望可以修改一下 ,提高命令的效率。
问题四:
这个程式是复制修改日期之间的文件,希望修改一个复制创建日期之间的文件的程式。。我在论坛看了一些关于创建日期的帖子都使用dir /tc 希望解释一下到底怎么应用。
我是一个刚接触批处理的新手。这几天在看论坛的帖子,写了这么一个批处理,发现了很多问题,希望大家指正一下。。
[ 本帖最后由 iamstar 于 2009-10-14 12:13 编辑 ] |
|