Linha de comando loop para executar o comando em todos os arquivos em um diretório (mais sub-diretórios, se possível

13

Estou assumindo que isso é bastante fácil de fazer, mas não tenho experiência com os utilitários de linha de comando do Windows. Basicamente, eu preciso iterar sobre todos os arquivos em um diretório (ótimo se ele pode fazer subdiretórios, mas posso executá-lo em cada um dos 5 diretórios, se necessário), obter o nome como uma variável e executá-lo

"C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
   -colorspace Gray -colors 32 file_var file_var

Eu vi nomear dinamicamente arquivos em um prompt de comando para loop . Eu seria capaz de usar isso (trocando o SET ... com o comando acima)? O espaço no computador em questão é muito limitado, então não posso executar um backup antes de executá-lo neste estágio (ruim, eu sei).

    
por Robert 14.05.2012 / 05:03

2 respostas

12

Estranho, houve uma resposta que teve a parte recursiva.

Bem, por Como fazer um loop por meio de correspondência de arquivos Curinga no arquivo em lote , consegui isso. Aqui está como foi realizado:

 cd path_to_root
 for /R %%f in (*.tif) do (
 "C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
    -colorspace Gray -colors 32 "%%f" "%%f"
 )
    
por 04.03.2013 / 15:21
3

Abra o PowerShell

$files = Get-ChildItem -Recurse 
foreach ($file in $files){
    c:\windows\System32\notepad.exe $file.FullName
}

Get-ChildItem recupera uma lista de arquivos como objetos do subdiretório atual. "-recurse" incluirá subdiretórios. Isso coloca-o em um array $ Files.

O loop foreach percorre cada arquivo e chama o notepad com o argumento da linha de comando do caminho completo do nome do arquivo para cada arquivo.

CUIDADO: Teste o código acima em um diretório com alguns pequenos arquivos de texto, pois ele abrirá uma instância do Bloco de Notas para cada arquivo.

Isso deve lhe dar uma ideia de como fazer o que você está procurando fazer.

    
por 02.03.2013 / 22:45