将特定文件从一个文件夹批量复制到另一个文件夹

时间:2021-07-22 21:20:41

标签: batch-file

我试图让它工作,成功复制了 1K 文件,然后在我下次运行它时停止工作。我做错了什么?

有些东西是不会终止的,但我终其一生都无法弄清楚。

我想让脚本执行以下操作:

在文件夹和所有子文件夹中搜索特定文件。然后将这些文件复制到新文件夹中。我不希望它复制文件夹结构或任何类型的东西。只需将文件复制到新目录,不要覆盖新文件夹中已有的任何内容。

@echo off

setlocal EnableExtensions EnableDelayedExpansion

set "SourceBaseFolder=G:\Drive\Catalog\Photography\Upload"
set "TargetBaseFolder=C:\Users\%USERNAME%\Desktop\New folder"

 if not exist "%SourceBaseFolder%\*" (
    echo %~nx0: There is no folder %SourceBaseFolder%
    set "ErrorCount=1"
    goto HaltOnError
)

cd /D "%SourceBaseFolder%"

if not exist "FileNames.txt" (
    echo %~nx0: There is no file %SourceBaseFolder%\FileNames.txt
    set "ErrorCount=1"
    goto HaltOnError
)

set "ErrorCount=0"

for /F "usebackq delims=" %%N in ("FileNames.txt") do (
   for /R %%J in ("%%N*") do (
        set "FilePath=%%~dpJ"
        if "!FilePath:%TargetBaseFolder%=!" == "!FilePath!" (
            set "TargetPath=%TargetBaseFolder%\Copy"
            md "!TargetPath!" 2>nul
            if exist "!TargetPath!\*" (
                echo Copying file %%~fJ
                copy /Y "%%~fJ" "!TargetPath!" >nul
            ) else (
                set /A ErrorCount+=1
                echo Failed to create directory !TargetPath!
            )
        )
    )
)

:HaltOnError
if %ErrorCount% NEQ 0 (
    echo.
    pause
)

endlocal

0 个答案:

没有答案