Как скопировать файл в каталог в DOS и создать каталоги при необходимости?

75664
nodmonkey

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

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

C:\file.txt 

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

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

но в это время

C:\example\ 

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

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

32
Этот вопрос на самом деле о DOS (или MS-DOS), или это о командной строке в версиях Windows на базе NT (2000, XP, Vista, 7, 8, Server)? Bob 11 лет назад 0
Я имел в виду DOS-подобный Windows CLI. Что вы посоветуете, как лучше описать «DOS-подобный Windows CLI» для заголовка сообщения? nodmonkey 11 лет назад 0
Как правило, я бы использовал `командную строку Windows` в заголовке / теле, вместе с тегами [tag: windows] и [tag: command-line] (обратите внимание, что [tag: cmd.exe] является синонимом тега [tag :командная строка]). Тег [tag: ms-dos] должен быть удален; и тег [tag: dos] не должен использоваться вообще ни при каких обстоятельствах. Bob 11 лет назад 0
Однако в этом случае, если существующие / принятые ответы относятся к DOS / MS-DOS, вы можете оставить все как есть. Для дальнейшего использования DOS интерпретируется как операционная система (ы). Хотя командная строка Windows основана на них, есть некоторые заметные различия. Bob 11 лет назад 0
вы можете назвать это приглашение cmd barlop 9 лет назад 0

3 ответа на вопрос

26
b w

Да, это 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 
xcopy хорошо, если вам не нужно переименовывать файл. Если вы это сделаете, к сожалению, xcopy спросит вас, является ли каталог каталогом или именем файла, и нет параметра командной строки, чтобы указать «это файл». RomanSt 10 лет назад 3
Смотрите другой ответ - используйте предыдущий `echo f | `с xcopy, чтобы ответить на этот запрос автоматически. mcw0933 9 лет назад 3
Обратите внимание, что в конце пути назначения должен быть символ косой черты `\`. В противном случае команда предложит пользователю указать, является ли пункт назначения каталогом или файлом, если он не существует. Lii 5 лет назад 0
14
msb

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

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» буквой, которую ваша система использует для файла, если вы используете ее на другом языке.

Что работает, только если в каталоге нет `file.txt.bak`, конечно. Тем не менее, это может работать в некоторых сценариях. RomanSt 10 лет назад 1
@romkyns верно. Через несколько месяцев после того, как я написал это, я столкнулся с той же проблемой и выполнил решение "echo f", оно также отлично работает. Редактирование моего ответа ... msb 10 лет назад 0
С `echo f | `, вам больше не нужен завершающий` * `. mcw0933 9 лет назад 1
Второе имя файла является избыточным в случае, если оно совпадает. "xcopy file.txt c: \ example \ new \ path \ to \ copy \ of \ file \" будет работать до тех пор, пока там находится косая черта в каталоге (в противном случае он спрашивает, имеется ли в виду файл или каталог) , FourtyTwo 7 лет назад 1
3
Dustin Laine

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

4 года спустя: да. DOS мы все еще используем его, хотя PowerShell существует .. Mr AH 9 лет назад 1