34

Как я могу скопировать файл с помощью команд DOS в структуру каталогов, которая еще не существует? Мне нужно иметь возможность принудительно создать путь к каталогу к месту назначения файла, если это место еще не существует.

Например, в этом месте уже есть файл file.txt:

C:\file.txt

И я хочу скопировать его в

C:\example\new\path\to\copy\of\file\file.txt

но в это время

C:\example\

и все подкаталоги могут или не могут еще существовать.

В основном, я ищу команду "скопировать и создать целевой путь при необходимости". Что бы вы посоветовали, это лучший способ добиться этого?

3 ответа3

27

Да, это xcopy. Вот как это будет выглядеть:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

XCOPY информация на

Возможно, вы также захотите взглянуть на ROBOCOPY, в комплекте ресурсов XP и стандарт в Vista, Windows 7 и Server 2008.

robocopy . c:\example\new\path\to\copy\of\file file.txt
17

Я пытался использовать что-то вроде:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

Но это спросило бы меня, был ли это файл или каталог. Так как у меня это было в командном файле с 40000 файлами, это было бы непрактично. Это решение только частично решает мою проблему: оно создает структуру каталогов, но требует взаимодействия с пользователем. Я нашел решение моей проблемы здесь:

https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder

Что в основном добавить "*" в конце файла назначения:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt*

РЕДАКТИРОВАТЬ: как указано @romkyns, это может привести к нежелательным результатам, если у вас есть файлы с таким же именем и чем-то еще (например, file.txt.bak). В той же ветке, опубликованной выше, еще одно решение, которое работает, - это "echo f" для вашей команды:

echo f | xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

Где вы должны заменить букву "f" буквой, которую ваша система использует для файла, если вы используете ее на другом языке.

3

DOS, вау! В любом случае вы используете команду XCOPY .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .