Mayko Petersen: Copiar vários arquivos pelo CMD - Prompt de Comando - ou usando arquivos em lote(batch) - ".bat"

terça-feira, 28 de setembro de 2010

Copiar vários arquivos pelo CMD - Prompt de Comando - ou usando arquivos em lote(batch) - ".bat"

O CMD é uma ferramenta poderosa para quem deseja executar comandos ou criar arquivos em lote para automatização de tarefas (pelo "edit"): um administrador pode efetuar um procedimento apenas clicando no ".bat" desenvolvido. Você pode desenvolver um arquivo ".bat" e enviar para um outro administrador efetuar determinada tarefa.
Entre essas tarefas está a de copiar arquivos com nomes diferentes para outro local.
A forma mais conhecida de copiar arquivos pelo prompt de comando é usando o comando "copy".

Exemplo: Desejo copiar todos os arquivos de "D:\Documents and Settings\[perfil]\Desktop" para "D:\Documents and Settings\[perfil]\Meus documentos".

> copy *.* "d:\Documents and Settings\[PERFIL]\Meus documentos"

Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D:\Documents and Settings\[PERFIL]>cd desktop

D:\Documents and Settings\[PERFIL]\Desktop>copy *.* "d:\Documents and Settings\[PERFIL]\
Meus documentos"

       30 arquivo(s) copiado(s).

D:\Documents and Settings\[PERFIL]\Desktop>


Explicando...

* > Substitui uma cadeia de caracteres. Exemplo: "Documentos.*". Vai se referir a: "Documentos.doc", "Documentos.PDF", "Documentos.Xls", etc.

? > Substitui UM caracter. Exemplo: "Document?.doc". Vai se referir a: "Documento.doc", "Documente.doc", etc.

Tanto "*" quanto "?" podem ser usados antes e/ou depois das extensões dos arquivos.

Mayko, tudo bem, mas se eu desejo copiar arquivos que começam com a letra "a" e tenham a extenção ".doc" e ".txt" com apenas uma linha de comando?

É... Com o copy você não conseguirá efetuar esse procedimento.

Mas um comando não muito conhecido, mas muito importante pode auxiliá-lo: o comando "for". Ele roda um comando específico para cada arquivo, ou conjunto de arquivos que você configura no set:

Syntaxe:
 > for {%Variable | %%Variable} in (Set) do Command [CommandLineOptions]

{%Variable | %%Variable}> é uma variável criada. Pode ser criada qualquer uma: %B, %D, %C etc... O %Variável é usado se estiver usando dentro do Prompt. O %%Variável, é usado se o comando estiver dentro de um arquivo em lote (.bat).

(Set) - Especifica um ou mais arquivos, diretórios, "range" de valores ou "strings" que você deseja processar com o comando especificado. O "()" é requirido.

Command - especifica o comando que você deseja executar com o que foi especificado  em (Set).

[CommandLineOptions] - especifica os parâmetros que cada comando pode ter. Exemplo: para o comando "copy" você pode ter parâmetros como /A, /B etc.

Exemplo:

> D:\Documents and Settings\[PERFIL]\Desktop>for %A in (*.doc *.txt) do copy "%A" "d:\Documents and Settings\ [PERFIL] \Meus documentos"

O resultado vai ser a cópia de todos os arquivos "txt" e "doc" presentes em D:\Documents and Settings\[PERFIL]\Desktop para D:\Documents and Settings\ [PERFIL] \Meus documentos.


Maiores informações sobre esse comando são encontradas no AJUDA E SUPORTE do WINDOWS XP e buscando por "BATCH".

Aparecerá nos TÓPICOS SUGERIDOS a palavra PARA [ se estiver na versão em inglês aparecerá: FOR ].

Só selecionar... Lá tem toda a explicação da sintaxe do comando.

3 comentários:

Willian Paravidino disse...

Tá sinistro mesmo, cheio dos macetes...
parabéns camarada, mt informativo..

Matheus disse...

O cara ta sinistro em suas publicações, já da pra montar um livro!

Anderson Veiga disse...

Parabéns brother... muito útil esse informação.. ta sinistro msm hein