Как скопировать каталог с отметкой даты - PullRequest
1 голос
/ 31 августа 2011

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

copy D:\%Computername%_\*\\*.* C:\WhateverPath

Конечно, я не мог заставить это работать. Кажется, простая проблема, но у меня нет большого опыта с пакетными файлами или DOS.

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Если у вас есть несколько папок, помеченных C:\%computername%_%random_time_stamp%\, и вам нужен доступ к каждой из них, а затем переместить все их содержимое в одну папку, вы можете сделать это:

Учитывая, что единственным символом подчеркивания в пути является знак между% computername% и вашей отметкой времени

FOR /F "USEBACKQ tokens=*" %%F IN (`DIR /b /a:d "C:\" ^| FIND /I "%computername%_"`) DO (
 COPY /y "%%~fF\*" "C:\WhateverPath\"
)

Это означает, что для каждого результата, который приходит от команды DIR, параметр / b означает отсутствие информации заголовка, / a: d означает только возврат каталогов, я хочу найти только папки с именем_компьютера_ в нем и скопировать содержимое каждой из этих папок в папку C: \ WheverPath \.

1 голос
/ 31 августа 2011

Попробуйте:

FOR /d %d IN (D:\%COMPUTERNAME%_*) DO xcopy %d C:\WhateverPath /E

Это перебирает все каталоги (отсюда /d) с шаблоном %COMPUTERNAME%_* в D:\ и копирует содержимое этих каталогов в C:\WhateverPath. /E - для копирования всех файлов и каталогов, в том числе и пустых.

Для документации xcopy введите xcopy /? в оболочке DOS (cmd).

Примечание: Если вы поместите это в пакетный файл (something.bat), вы должны заменить %d на %%d в приведенном выше коде.

...