Пакетный скрипт для копирования и переименования файлов - PullRequest
0 голосов
/ 07 ноября 2018

Я пишу пакетный скрипт, который я буду использовать для копирования файлов из местоположения A в местоположение B с переименованием исходного файла из местоположения A, если тот же файл уже существует в расположении B.

В настоящее время я использую фрагмент из другой темы здесь, в стеке, но он не работает с файлами из подпапок. Может ли кто-нибудь помочь мне с приведенным ниже кодом, чтобы он работал со всеми файлами и подкаталогами из обоих мест? Большое спасибо!

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET sourcedir="D:\TEST\FROM"
SET destdir="D:\TEST\TO"
SET /a count=0
for %%c in (%sourcedir%\*.*) do (
 CALL :select
 ECHO copy "%%c" "%destdir%\%%~nc_!count!%%~xc" /s
)

GOTO :EOF

:select
SET /a count+=1
IF EXIST "%destdir%\%%c" GOTO select
GOTO :eof

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Обмен с тем, что мне удалось сделать до сих пор, работает для того, что мне нужно, но все еще не очень хорошо для подпапок:

@ECHO OFF
SET "sourcedir= "
SET "destdir= "
SET "HH=%TIME:~0,2%"
SET "MM=%TIME:~3,2%"
SET "SS=%TIME:~6,2%"
SET "_Time=%HH%%MM%%SS%"

FOR /R "%sourcedir%" %%G IN (*.*) DO (
 IF EXIST "%destdir%\%%~nG%%~xG" (
    COPY /V /Z "%%G" "%destdir%\%%~nG_duplicate_%_Time%%%~xG"
 ) ELSE (
    COPY /V /Z "%%G"  "%destdir%\%%~nG%%~xG")
)
0 голосов
/ 07 ноября 2018

Замените вашу for петлю следующей for петлей:

for /R "%sourcedir%" %%c in (*.*) do (what you like)

Кроме того, зачем вам следующий фрагмент кода?

copy "%%c" "%destdir%\%%~nc_!count!%%~xc" /s

Просто copy "%%c" %destdir%

В общем, вы можете написать:

@ECHO OFF
SET sourcedir="D:\TEST\FROM"
SET destdir="D:\TEST\TO"
:: SET /a count=0
for /R "%sourcedir%" %%c in (*.*) do (
 :: SET /a count+=1
 IF NOT EXIST "%destdir%\%%c" (
    echo copy "%%c" %destdir%
 )
)

Надеюсь, у вас все в порядке с этой возможной копией Пакетный файл Windows с циклически проходящими подпапками

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