Как скопировать файлы из нескольких подпапок (неизвестные имена) в одну папку с помощью Robocopy? - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу скопировать несколько файлов (указать c файлы) из нескольких подпапок в одну папку. Проблема в том, что я не знаю имен подпапок, потому что они динамически создаются сервером.

Я не хочу копировать сами подпапки, но копирую файлы ТОЛЬКО в эти подпапки.

Ответы [ 3 ]

0 голосов
/ 02 апреля 2020

Я получил ответ:

@ECHO OFF

SET "source=C:\Folder_Source"
SET "dest=C:\Destination"
SET "FileList=*.pdf" 

SET "dupCnt=1"

FOR /R "%source%" %%A IN (%FileList%) DO (
    IF NOT EXIST "%dest%\%%~NXA" (
        XCOPY /F /Y "%%~FA" "%dest%\" && IF EXIST "%%~FA" DEL /Q /F "%%~FA"
    ) ELSE (
        CALL :DupeRoutine "%%~FA" "%%~NA" "%%~XA"
        )
    )
GOTO :EOF

:DupeRoutine
IF EXIST "%dest%\%~2_(%dupCnt%)%~3" (
    SET /A dupCnt=%dupCnt%+1
    CALL :DupeRoutine "%~1" "%~2" "%~3"
) ELSE (
    IF NOT EXIST "%dest%\%~2_(%dupCnt%)%~3" ECHO F | XCOPY /Y /F "%~1" "%dest%\%~2_(%dupCnt%)%~3" && DEL /Q /F "%~1"
    SET "dupCnt=1" 
    )
GOTO :EOF
0 голосов
/ 02 апреля 2020

Вот способ найти все файлы и скопировать их в один каталог. Если вы уверены, что обрабатываются правильные файлы, удалите -WhatIf из команды Copy-Item. Ваши каталоги будут отличаться от моих.

Get-ChildItem -Recurse -File -Path 'C:\src\t' | ForEach-Object { Copy-Item -Path $_.FullName -Destination 'C:\datatarget' -WhatIf }

Если вы хотите использовать псевдонимы, они могут быть короче.

gci -rec -file -path 'C:\src\t'|%{cp $_.FullName 'C:\datatarget' -WhatIf}

Если вы должны запустить его из оболочки cmd.exe , используйте следующее.

powershell -NoLogo -NoProfile -Command ^
    "gci -rec -file -path 'C:\src\t'|%{cp $_.FullName 'C:\datatarget' -WhatIf}"
0 голосов
/ 02 апреля 2020

robocopy не может этого сделать. Используйте простую команду copy с al oop:

for /r "X:\Source\" %%a in (*) do ECHO copy /b "%%a" "Z:\Destination\"

ПРИМЕЧАНИЕ. Я снял с охраны команду copy, просто повторив ее. Когда это произойдет, что вы хотите, просто удалите ECHO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...