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

Я копирую файлы .gml из одного каталога, используя пакетный файл.

Моя проблема заключается в том, что все они находятся в подкаталогах и имеют одно и то же имя.

То, что у меня есть до сих порis:

FOR /r C:\Users\%USERNAME%\Downloads %%f in (*.gml) do copy %%~f C:\Users\%USERNAME%\Desktop\Inspire_Index_polygons\

Это копирует файлы, но перезаписывает существующий, поэтому я могу видеть, что пакетный файл работает из-за изменения размера файла, поскольку он перезаписывается каждый раз.

Есть ли способ, где я могу скопировать файлы .gml и переименовать скопированный файл с повторяющимся +1, чтобы имя всегда отличалось при копировании.

1 Ответ

0 голосов
/ 11 сентября 2018

Вот кое-что, что поможет вам достичь этого. Мы проверяем, существует ли файл в месте назначения, если он существует, переименовываем его, добавляя (+1).

@echo off
setlocal enabledelayedexpansion
set "source=C:\Users\%USERNAME%\Downloads\"
set "dest=C:\Users\%USERNAME%\Desktop\Inspire_Index_polygons\"
set /a cnt=0
for /f "tokens=*" %%a in ('dir /S /B /A-D "%source%*.gml"') do for /f "tokens=*" %%b in ('dir /B "%%a"') do if exist "%dest%\%%b" (
        set "ext=%%~xa"
        set "fname=%%~na"
        if exist "%dest%\!fname!(!cnt!)!ext!" (set /a cnt=!cnt!+1)
        set /a cnt=!cnt!+1
        move "%%a" "%dest%\!fname!(!cnt!)!ext!"
) else move "%%a" "%dest%\%%b"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...