Você pode alcançar o resultado desejado usando apenas o shell CMD combinando forfiles , for e expansão de variável atrasada (consulte também: < a href="http://ss64.com/nt/cmd.html"> cmd ).
Etapas
-
Crie um arquivo em lote (por exemplo,
C:\jpglist.bat
) e salve as seguintes instruções:@echo off if %2 == FALSE exit cd /D %1 for %%a in (*.jpg) do set list=!list! "%%a" echo %list:~1%> jpglist.txt
-
Abra um prompt de comando.
-
Executar
forfiles /P PATH /S /C "cmd /V:on /C C:\jpglist.bat @path @isdir"
onde PATH é o caminho completo do diretório principal.
-
O arquivo em lote não é mais necessário. Exclua se você quiser.
Como funciona
O comando:
-
forfiles /P PATH /S /C "..."
é recursivamente (/S
) através de PATH e seus subdiretórios e executa...
para cada entrada de diretório. -
cmd /V:on /C ...
abre um novo shell com expansão de variável atrasada ativada (/V:on
) e executa...
. -
C:\jpglist.bat @path @isdir
chama o arquivo em lote e passa o caminho completo da entrada como primeiro parâmetro.@isdir
será TRUE se@path
for um diretório; caso contrário, será FALSE .
O arquivo em lote:
-
if %2 == FALSE exit
sai imediatamente se o primeiro argumento não for um diretório. -
cd /D %1
muda para o diretório especificado no primeiro argumento (/D
ativa a troca de unidades caso seja necessário). -
for %%a in (*.jpg) do set list=!list! "%%a"
passa por todos os arquivos com uma extensão .jpg e adiciona seus nomes à variável lista .Usar
!list!
em vez de%list%
atrasa a expansão da variável, ou seja, lista será expandida em cada iteração, em vez de apenas uma vez no início. -
echo %list:~1%> jpglist.txt
grava o conteúdo da variávellist
(exceto o primeiro caractere, que será um espaço inicial) em um arquivo chamado jpglist.txt no diretório atual.