for %I in (file1.txt file2.txt file3.txt) do copy %I c:\somedir\
Você pode usar isso em um arquivo em lote ou diretamente na linha de comando. Não tão limpo quanto * nix, mas funciona.
Em um sistema Unix, esse comando copia dois arquivos para uma pasta chamada folder
:
cp foo bar folder
No Windows, este não é um comando válido:
copy foo bar folder
The syntax of the command is incorrect.
Posso fazer isso em um comando no Windows usando suas ferramentas internas?
O Windows inclui o robocopy incorporado, que copia vários arquivos de um único comando:
robocopy a\source\folder a\dest\folder file1.docx file2.exe
Vale a pena notar que, se você tiver uma expressão curinga em vez de uma lista explícita de arquivos, COPY copiará todos os arquivos para o diretório de destino:
COPY srcdir\* destdir\
COPY *sy?.* anotherdestdir\
Qualquer um vindo de um background * nix acharia particularmente confuso o fato de trabalhar enquanto listas explícitas não o fazem, porque em shells Unix-like eles são indistinguíveis para um programa - o shell expande qualquer curinga, então o programa termina com uma lista de arquivos explícitos de qualquer maneira. Isso não se aplica aqui porque o shell de comando do Windows transmite curingas diretamente aos programas e cabe a eles fazer a expansão. (Também o COPY é um comando embutido no shell em vez de um programa externo como o cp no Linux, portanto, em princípio, ele poderia desobedecer as regras usuais sobre argumentos de linha de comando, mas isso não se aplica aqui.)
Aqui está um pequeno script em lote para facilitar a cópia de vários arquivos:
set FOLDER=%1
shift
for %%i in (%1 %2 %3 %4 %5 %6 %7 %8 %9) do copy %%i %FOLDER%
Uso:
my-copy <DEST-FOLDER> source [source2, source3, ...]
Com o advento do Bash no Ubuntu no Windows , agora você pode usar a sintaxe nativa do Linux:
cp foo bar folder
Tente
copy foo + bar folder
Tags command-line windows