Пакетный файл Windows для копирования файлов позволяет переименовать расширение файла, но не копировать дубликаты

Я хочу скопировать файлы из двух каталогов на удаленном компьютере в один каталог на сервере Windows. В одном каталоге у меня есть файлы с расширением *.csv, а в другом *.asc. Диски были сопоставлены с соглашением UNC, поэтому у нас есть такие диски, как Z:\, которые сопоставлены с определенной папкой на другом компьютере. Сценарии могут находиться либо на удаленном компьютере, либо на сервере Windows.

Файлы с расширением *.asc затем обрабатываются, после чего их необходимо переименовать или переместить в другой каталог (что и делает наше программное обеспечение). Файлы с расширением *.csv не изменяются

Я попытался использовать Robocopy, и это сработало с переключателем MOVE.

c:\scripts\ROBOCOPY.exe z:\ C:\files\Magellan /MOV /NP /R:2 /W:2 *.asc >c:\scripts\synchro.log 

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

Я не хочу копировать повторяющиеся файлы *.asc - иначе эти файлы будут обработаны заново.

Поэтому мне нужно копировать только новые файлы, т.е. файлы, которые не были скопированы ранее, и сравнивать их с другим местом, где файл был либо переименован, либо перемещен!


person user1044111    schedule 04.05.2015    source источник
comment
The files with the *.asc extension are then processed and then need to be renamed or moved to another directory - Как эти файлы должны быть переименованы. Это не упоминается. Я предполагаю, что изменено расширение.   -  person npocmaka    schedule 04.05.2015
comment
Да - либо расширение переименовывается, либо их можно переместить в подкаталог   -  person user1044111    schedule 04.05.2015


Ответы (2)


@echo off

pushd Z:\

for %%# in (*.csv) do (
  echo n|copy /-Y "%%~f#" "C:\files\Magellan\"
)

for %%# in (*.asc) do (
  echo n|copy /-Y "%%~f#"   "C:\files\Magellan\%%~n#.csv"
)

попробуйте это. Если ваши настройки языка отличаются от английского, вам может потребоваться изменить echo n, который относится к вашему языку. Не уверен, что это можно сделать с помощью robocopy или xcopy (мне нужно подробно прочитать их справку). Это скопирует / сначала переместите файлы .csv, а затем файлы .asc. Вы можете изменить порядок и, где это необходимо, вы можете заменить команду copy на move

person npocmaka    schedule 04.05.2015
comment
.y:\›(echo n | copy /-Y y:\ELISA0043.CSV C:\files\Magellan\ ) Переписать C:\files\Magellan\ELISA0043.CSV? (Да/Нет/Все): n 0 файлов скопировано. - person user1044111; 05.05.2015
comment
Спасибо npocmaka Мой язык английский и первая часть работала отлично. Он определяет, есть ли файл с таким же именем, и не копирует его, что и требуется. Как добавить запись в файл журнала? - person user1044111; 05.05.2015
comment
@nopocmaka, у меня есть эта команда копирования, которая работает нормально, однако, когда я выполняю перемещение, я хочу, чтобы файл был переименован в папку назначения в файле летучей мыши robocopy START /WAIT robocopy %EFM_EXPORT% %EFM_TEMP% *.CFX /S /NP /R:5 /W:5 /XX /XD *PR *PA *TA *DC *Bypass /MOV /LOG:%EFM_MOVE% Я попытался добавить %filename%, установив его выше в моем коде, чтобы он соответствовал формату даты, но тоже не помогло set filename=Robocopy_%date:~-4,4%-%date:~-7,2%-%date:~-10,2%#%time::=-%.txt это можно сделать.? - person MethodMan; 02.09.2016

Выберите порядок, в котором вы хотите запустить эти строки (и исправьте буквы сопоставленных дисков). Тем не менее, я не уверен, что вы просто хотите скопировать файлы csv и asc в каталог Magellan, поскольку в вашем вопросе упоминается сравнение их с другим местом.

echo n|copy /-y z:\*.csv c:\files\Magellan
echo n|copy /-y y:\*.asc c:\files\Magellan\*.csv
person Scott C    schedule 04.05.2015
comment
echo n|copy .. не работает с подстановочными знаками. Будет применено только к первому файлу. Попробуйте выполнить его в консоли и там будут скопированные файлы. Подробнее -› ss64.com/nt/ копировать.html - person npocmaka; 04.05.2015
comment
Как давно вы пробовали это? Это работает (по крайней мере, на Win7 и 2008) - person Scott C; 05.05.2015