Usando um loop for no cmd.exe da Microsoft, como processar apenas os arquivos com uma determinada extensão?

2

Eu tenho a pasta c:\test\ e dois arquivos nela a.txt e b.txtv .

Gostaria de processar apenas os arquivos com extensão igual a .txt .

Se eu escrever este comando

cd c:\test
for %f in (*.txt) do echo %f

Eu obtenho o resultado em que a.txt e b.txtv estão listados.

O mesmo acontece com

cd c:\test
dir *.txt

Parece que .txt é igual a .txtv .

Eu tenho o Windows XP SP3 em italiano e o resultado de

ver

é Microsoft Windows XP [Versione 5.1.2600] .

O mesmo resultado é do Windows 7 em inglês Microsoft Windows XP [Version 6.1.7601] .

    
por Alessandro Jacopson 02.07.2012 / 16:59

3 respostas

4
for %%I in (*.*) do if "%%~xI"==".txt" (echo %%I)

Isso deve ser feito.

Edit: essa é a sintaxe de "scripting". Se você quiser digitar isso na linha de comando, você deve remover um dos% do sinal cada vez que eles são duplicados, linke isso:

for %I in (*.*) do if "%~xI"==".txt" (echo %I)
    
por 02.07.2012 / 17:33
7

Tente usar forfiles . Parece ser mais restritivo no que ele retorna para a extensão, além de ter o benefício adicional de um loop for embutido. Já deve estar na caixa Win7, mas você pode ter que instalar um 2003 Server Resource Kit na caixa XP para acessá-lo.

    
por 02.07.2012 / 17:05
0

É muito simples no PowerShell e funciona bem com o seguinte:

PS C:\Users\bpabst\Desktop> ls *.txt


Directory: C:\Users\bpabst\Desktop


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---          7/2/2012  11:19 AM         11 test.txt
    
por 02.07.2012 / 17:21