6

В системе Unix эта команда копирует два файла в папку с именем folder:

cp foo bar folder

В Windows это недопустимая команда:

copy foo bar folder
The syntax of the command is incorrect.

Могу ли я сделать это одной командой в Windows, используя встроенные инструменты?

6 ответов6

6

В Windows встроена Robocopy , которая копирует несколько файлов из одной команды:

robocopy a\source\folder a\dest\folder file1.docx file2.exe
5
for %I in (file1.txt file2.txt file3.txt) do copy %I c:\somedir\

Вы можете использовать это в пакетном файле или непосредственно из командной строки. Не так чисто, как * nix, но это работает.

2

Стоит отметить, что если у вас есть подстановочное выражение, а не явный список файлов, то COPY скопирует все файлы в целевой каталог:

COPY srcdir\* destdir\
COPY *sy?.* anotherdestdir\

Любой, кто пришел из * nix-фона, особенно смущает, что хотя он работает, а явные списки - нет, потому что в Unix-подобных оболочках они неразличимы для программы - оболочка расширяет любые подстановочные знаки, поэтому программа заканчивается явным список файлов в любом случае. Это не применимо здесь, потому что командная оболочка Windows передает символы подстановки напрямую программам, и они сами должны выполнить расширение. (Также COPY - это встроенная команда в оболочке, а не внешняя программа, такая как cp в Linux, поэтому в принципе она может потенциально не подчиняться обычным правилам в отношении аргументов командной строки, но на самом деле это здесь не применимо.)

1

Вот короткий пакетный скрипт для облегчения копирования нескольких файлов:

set FOLDER=%1

shift

for %%i in (%1 %2 %3 %4 %5 %6 %7 %8 %9) do copy %%i %FOLDER%

Использование:

my-copy <DEST-FOLDER> source [source2, source3, ...]
1

С появлением Bash для Ubuntu в Windows вы можете использовать собственный синтаксис Linux:

cp foo bar folder
0

Пытаться

copy foo + bar folder

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