Robocopy (или xcopy) читать из файла? - PullRequest
1 голос
/ 25 января 2011

поэтому у меня есть несколько листов Excel, которые содержат каталоги, все из одного корневого каталога. Есть ли в любом случае, чтобы robocopy (или аналогичная программа) считывал лист Excel в качестве входных данных, чтобы копировать только выбранные файлы?

Это формат электронных таблиц:

NMMC c6 31b5ac6c-1377-4a86-90a0-73c6335907e3.IMG
NMMC 2e 1da3d2ec-526f-479a-9c09-90cb2cfad0b6.IMG
NMMC 8a f77168ad-2f35-490c-a2a8-25e9fa4ac0ea.IMG
NMMC 2f fc2162f8-7548-4921-b722-5899cbe54641.IMG
NMMC fc 1fe09fcd-3861-4de8-8bfd-4510ffa8f29c.IMG
hcri001 1b  243161b4-eef0-4d5c-9e42-dcea6772afdd.IMG
hcri001 a7  7e60ba72-fb8f-4d65-ae34-92b034c10e2e.IMG
hcri001 84  7934584f-7bc8-4450-bf6d-da58ac2ebb1a.IMG
hcri001 1a  cda461ab-fe9d-4b4f-87bf-43dab9dd8644.IMG
hcri001 2b  4f2c02b6-31c6-4d8b-975e-591778bcdfef.IMG
ICPS    8a  2aca38a8-4133-4972-a03f-8c3c15654df3.IMG
ICPS    89  8338f897-76c0-4f6f-9ae5-3b4c7e8a302c.IMG
ICPS    30  d9dba300-6c14-4484-a147-bccb9dd15aa3.IMG

Я хотел бы скопировать эти файлы в другую файловую систему с такой же структурой (например, если изображение происходит из C:\Apps\Test\Site\NMMC\c6\31b5ac6c-1377-4a86-90a0-73c6335907e3.IMG, тогда мне нужно скопировать его в Z:\Apps\FileSystem\NMMC\c6\31b5ac6c-1377-4a86-90a0-73c6335907e3.IMG

Возможно ли это сделать?

Спасибо

Отредактировано для устранения путаницы

Ответы [ 4 ]

1 голос
/ 25 января 2011

Если вы хотите избежать написания кода Office Interop, я предлагаю сделать следующее:

Сначала в Excel сохраните данные в виде файла CSV по пути c: \ temp \ foo.csv.Это создаст файл данных, который выглядит следующим образом:

NMMC,2e,1da3d2ec-526f-479a-9c09-90cb2cfad0b6.IMG
NMMC,8a,f77168ad-2f35-490c-a2a8-25e9fa4ac0ea.IMG
NMMC,2f,fc2162f8-7548-4921-b722-5899cbe54641.IMG
NMMC,fc,1fe09fcd-3861-4de8-8bfd-4510ffa8f29c.IMG

Затем откройте командную строку и напишите следующую команду:

for /f "delims=, tokens=3" %i in ( c:\temp\foo.csv ) do echo %i

Это выведет все имена файлов (итолько имена файлов).Если вы довольны, что это работает, измените «echo% i» на любую команду xcopy, которую вы хотите.

0 голосов
/ 25 января 2011

Хорошо, я думаю, что у меня это есть. Вот скрипт командной строки, который я запускаю:

for /f "delims=, tokens=1,2,3" %i in ( D:\foo.csv ) do xcopy /i /y "Z:\%i\%j\%k" "D:\%i\%j\%k"

Это именно то, что я хочу, однако для каждого файла, который он пытается скопировать, появляется запрос, спрашивающий меня, является ли он файлом или каталогом. Есть ли способ сообщить xcopy, что они ВСЕ файлы? Я думал, что это то, что я / я сделал, но это не подавляет подсказки.

0 голосов
/ 25 января 2011

Вы можете попробовать использовать PowerShell COM Automation для чтения файла Excel и подачи строк в копию, xcopy или robocopy.

Я не могу привести пример того, как это будет сделано на практике, мой PowerShell-Fu недостаточно силен. Гугл может быть твоим другом там.

0 голосов
/ 25 января 2011

Создание командного файла или сценария оболочки с помощью текстового редактора.Например, вы можете найти / заменить, чтобы файл bat содержал что-то вроде этого:

copy c:\31b5ac6c-1377-4a86-90a0-73c6335907e3.IMG
copy c:\1da3d2ec-526f-479a-9c09-90cb2cfad0b6.IMG
copy c:\f77168ad-2f35-490c-a2a8-25e9fa4ac0ea.IMG
copy c:\fc2162f8-7548-4921-b722-5899cbe54641.IMG
copy c:\1fe09fcd-3861-4de8-8bfd-4510ffa8f29c.IMG
...