Как я могу скопировать файл с помощью команд DOS в структуру каталогов, которая может еще не существовать? Мне нужно иметь возможность принудительно создать путь к каталогу к месту назначения файла, если это место еще не существует.
Например, в этом месте уже есть файл file.txt:
C:\file.txt
И я хочу скопировать его в
C:\example\new\path\to\copy\of\file\file.txt
но в это время
C:\example\
и все подкаталоги могут или не могут еще существовать.
В основном, я ищу команду «скопировать и создать целевой путь при необходимости». Что бы вы посоветовали, это лучший способ добиться этого?
Windows command line
в заголовке / теле, вместе с окнами тегов и командной строкой (обратите внимание, что cmd.exe является синонимом тега командной строки ). Метка ms-dos должна быть удалена; и метка dos не должна использоваться вообще ни при каких обстоятельствах.Ответы:
Да, это xcopy . Вот как это будет выглядеть:
Информация о XCOPY на
Возможно, вы также захотите взглянуть на ROBOCOPY , в комплекте ресурсов XP и стандарт в Vista, Windows 7 и Server 2008.
источник
echo f |
с xcopy, чтобы автоматически ответить на этот запрос.Я пытался использовать что-то вроде:
Но это спросило бы меня, был ли это файл или каталог. Поскольку это было в командном файле с 40000 файлами, это было бы непрактично. Это решение только частично решает мою проблему: оно создает структуру каталогов, но требует взаимодействия с пользователем. Я нашел решение моей проблемы здесь:
https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder
Что в основном добавить "*" в конце файла назначения:
РЕДАКТИРОВАТЬ: как указано @romkyns, это может привести к нежелательным результатам, если у вас есть файлы с таким же именем и чем-то еще (например, file.txt.bak). В той же ветке, опубликованной выше, еще одно решение, которое работает, - это "echo f" для вашей команды:
Где вы должны заменить букву «f» буквой, которую ваша система использует для файла, если вы используете ее на другом языке.
источник
file.txt.bak
в каталоге, конечно. Тем не менее, это может работать в некоторых сценариях.echo f |
, вам больше не нужен трейлинг*
.DOS, вау! В любом случае вы используете команду XCOPY .
источник
Используя
copy
илиxCopy
, чтобы избежать ошибокcopy
или подсказокxCopy
, проверьте наличие необходимой папки и при необходимости создайте ее:или объедините команды
&&
в одной командной строке:То же самое можно сделать с помощью
move
вместоcopy
. Я узнал об этой технике из ответа StackOverflow о том, как это сделатьmove
.источник