使用具有超时的批处理文件逐个移动文本文件

时间:2016-11-07 12:27:34

标签: batch-file

大家好我是尝试使用批处理脚本从一个文件夹到另一个文件夹一个接一个地移动文本文件,超时为8秒。到目前为止我有这个脚本;

move /-y "D:\example\original\*2007*.txt" "D:\example\New folder\"

我应该添加什么,以便它不会立即移动文件?

2 个答案:

答案 0 :(得分:0)

正如 @npocmaka 建议用户确认,例如此批处理脚本:Movies wrapper script

@ECHO OFF
SETLOCAL 

SET "ROOT=%~dp0"
SET "FORCE=0"

IF /I "%~1"=="/f" (
    SET "FORCE=1"
    SHIFT
)

IF "%~1"=="" GOTO :END_PARSE
SET "ROOT=%ROOT%%~1\"
:END_PARSE

ECHO -----------------------------------------------
ECHO WRAPPER - "%ROOT%"
ECHO -----------------------------------------------

SET "COUNT_SUCC=0"
SET "COUNT_FAIL=0"
SETLOCAL enabledelayedexpansion
REM Iterates throw the files on this current folder.
FOR %%f IN ("%ROOT%\*.*") DO (

    REM Checks if the file isn't the batch file.
    IF NOT "%%~ff" == "%~f0" ( 

        IF !FORCE! NEQ 1 (
        rem echo force=!Force!
            SET /P "INPUT=Do you want to wrap the file "%%~nxf" ? (Y/[N])"
            IF /I "!INPUT!"=="Y" (

                REM Create a directory as the same name.
                IF NOT EXIST "!ROOT!\%%~nf\" MD "!ROOT!%%~nf\">NUL 2>NUL

                REM Checks if the directory was created.
                REM /Y Suppresses prompting to confirm you want to overwirte an existing destination file.
                IF EXIST "!ROOT!%%~nf\" MOVE /y "%%~ff" "!ROOT!%%~nf\">NUL 2>NUL

                REM Count files who has been wrapped or not.
                ECHO.
                IF NOT EXIST "!ROOT!%%~nf\%%~nf%%~xf" (
                    RMDIR /s /q "!ROOT!\%%~nf\" >NUL 2>NUL
                    SET /a "COUNT_FAIL+=1"
                    ECHO The file "%%~nf" hasn't been wrap.
                ) ELSE (
                    ECHO The file "%%~nf" has been wrapped.
                    SET /a "COUNT_SUCC+=1"
                )
            )
        ) Else (
         REM Checks if the file isn't the batch file.
            IF NOT "%%~ff" == "%~f0" (
         REM Create a directory as the same name.
                IF NOT EXIST "!ROOT!\%%~nf\" MD "!ROOT!%%~nf\"
                rem >NUL 2>NUL

                REM Checks if the directory was created.
                REM /Y Suppresses prompting to confirm you want to overwirte an existing destination file.
                IF EXIST "!ROOT!%%~nf\"  MOVE /y "%%~ff" "!ROOT!%%~nf\"
                rem >NUL 2>NUL

                REM Count files who has been wrapped or not.
                ECHO.
                IF NOT EXIST "!ROOT!%%~nf\%%~nf%%~xf" (
                    RMDIR /s /q "!ROOT!\%%~nf\" >NUL 2>NUL
                    SET /a "COUNT_FAIL+=1"
                    ECHO The file "%%~nf" hasn't been wrap.
                ) ELSE (
                    ECHO The file "%%~nf" has been wrapped.
                    SET /a "COUNT_SUCC+=1"
                )
            )   
        )
    ) 
)
ECHO.
SET /a "COUNT_TOT=COUNT_SUCC+COUNT_FAIL"
ECHO Total of %COUNT_TOT% files(s) : %COUNT_SUCC% file(s) wrapped and %COUNT_FAIL% file(s) failed.
ECHO.
PAUSE

答案 1 :(得分:0)

使用简单的for循环来单独处理每个文件:

for %%a in ("D:\example\original\*2007*.txt") do (
  move /-y "%%~fa" "D:\example\New folder\"
  timeout /t 8
)

有关详细信息,请参阅for /?