Как скопировать файл в каталог в DOS и создать каталоги при необходимости?
75664
nodmonkey
Как я могу скопировать файл с помощью команд DOS в структуру каталогов, которая еще не существует? Мне нужно иметь возможность принудительно создать путь к каталогу к месту назначения файла, если это место еще не существует.
Например, в этом месте уже есть файл file.txt:
C:\file.txt
И я хочу скопировать его в
C:\example\new\path\to\copy\of\file\file.txt
но в это время
C:\example\
и все подкаталоги могут или не могут еще существовать.
В основном, я ищу команду «скопировать и создать целевой путь при необходимости». Что бы вы посоветовали, это лучший способ добиться этого?
Этот вопрос на самом деле о 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
xcopy хорошо, если вам не нужно переименовывать файл. Если вы это сделаете, к сожалению, xcopy спросит вас, является ли каталог каталогом или именем файла, и нет параметра командной строки, чтобы указать «это файл».
RomanSt 10 лет назад
3
Смотрите другой ответ - используйте предыдущий `echo f | `с xcopy, чтобы ответить на этот запрос автоматически.
mcw0933 9 лет назад
3
Обратите внимание, что в конце пути назначения должен быть символ косой черты `\`. В противном случае команда предложит пользователю указать, является ли пункт назначения каталогом или файлом, если он не существует.
Lii 5 лет назад
0
Но это спросило бы меня, был ли это файл или каталог. Так как у меня это было в командном файле с 40000 файлами, это было бы непрактично. Это решение только частично решает мою проблему: оно создает структуру каталогов, но требует взаимодействия с пользователем. Я нашел решение моей проблемы здесь:
РЕДАКТИРОВАТЬ: как указано @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