Пакетният файл на 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 | копиране /-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 bat 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/ copy.html - person npocmaka; 04.05.2015
comment
От колко време не си го пробвал? Работи (поне на Win7 и 2008) - person Scott C; 05.05.2015