zoukankan      html  css  js  c++  java
  • 批量复制指定目录下的文件,并统计执行时间

       该脚本用于将指定目录下的文件 复制到指定的目录,可指定复制的次数,并统计消耗的时间。 比如想要大批量制造很多文件。

    遇到的问题是:如果for循环中,文件名有空格,则会报错:“找不到指定的文件”,那么可以在for循环中添加:"tokens=* delims="  ,并且复制的文件需要加引号,这样复制文件就没问题了。

    for /f "tokens=* delims=" %%a in ('dir /s/b "D:	est1" ') do (
          xcopy "%%a" "D:	est" /e /c /y /h 
    )

    全部代码如下:

    @echo off
    REM #############
    REM 批量复制指定目录下的所有文件,并统计执行时间的脚本
    REM 1输入源文件路径
    REM 2输入目标路径
    REM 3输入复制次数
    REM 4确认输入信息
    REM ##############
    
    echo *******批量复制文件脚本********
    
    :again_input
    set /p sour=输入源文件路径:
    set /p dest=输入目标文件路径:
    set /p coun=输入复制次数:
    
    
    :again_yn
    set /p yn=是否确认输入信息 Y/N:
    if %yn% ==y goto cont_copy
    if %yn% ==Y goto cont_copy
    if %yn% ==n goto again_input
    if %yn% ==N goto again_input
    echo  输入错误,重新输入!
    goto again_yn
    
    :cont_copy
    echo ***************
    echo 正在创建文件,请稍等...
    echo ***************
    set firTime=%time%
    set /a done =1
    
    :loop
    set /a left = %coun% - %done%
    echo 第%done%/%coun%次循环.....
    
    REM ****************创建复制文件循环体***********
    set destpath=%dest%\%done%
    for /f "tokens=* delims=" %%a in ('dir /s/b "%sour%" ') do (
          if not exist  %destpath% (
               MD %destpath%
          )
          xcopy "%%a" "%destpath%" /e /c /y /h 
    )
    REM ****************创建次数循环体***************
    if %done%==%coun% goto loop_end
    set /a done = %done% +1
    goto loop
    :loop_end
    
    set secTime=%time%
    echo ***************
    echo 创建完成...
    echo ***************
    
    SET /a fhr=%firTime:~0,2%
    SET /a fmi=%firTime:~3,2%
    SET /a fse=%firTime:~6,2%
    SET /a fms=%firTime:~9%
    
    SET /a shr=%secTime:~0,2%
    SET /a smi=%secTime:~3,2%
    SET /a sse=%secTime:~6,2%
    SET /a sms=%secTime:~9%
    
    set /a hours=%shr%-%fhr%
    set /a mins=%smi%-%fmi%
    set /a secs=%sse%-%fse%
    set /a ms=%sms%-%fms%
    
    if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
    if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
    if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
    if %hours% lss 0 set /a hours = 24%hours%
    if 1%ms% lss 100 set ms=0%ms%
    
    echo **********************
    echo 开始时间[%firTime%]
    echo 结束时间[%secTime%]
    echo 消耗时间[%hours%:%mins%:%secs%:%ms%]
    echo **********************
    
    PAUSE
  • 相关阅读:
    Django(app的概念、ORM介绍及编码错误问题)
    Django(完整的登录示例、render字符串替换和redirect跳转)
    Construct Binary Tree from Preorder and Inorder Traversal
    Single Number II
    Single Number
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Binary Tree Zigzag Level Order Traversal
    Recover Binary Search Tree
    Add Binary
  • 原文地址:https://www.cnblogs.com/BackingStar/p/12900857.html
Copyright © 2011-2022 走看看