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 @isdirchama o arquivo em lote e passa o caminho completo da entrada como primeiro parâmetro.@isdirserá TRUE se@pathfor um diretório; caso contrário, será FALSE .
O arquivo em lote:
-
if %2 == FALSE exitsai imediatamente se o primeiro argumento não for um diretório. -
cd /D %1muda para o diretório especificado no primeiro argumento (/Dativa 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.txtgrava 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.