Como ocultar extensões de arquivo em um prompt de comando / saída dir?

9

O que eu quero fazer parece muito simples:
tenho uma pasta no Windows contendo itens de vários tipos, incluindo arquivos PDF, arquivos TXT e subdiretórios. Estou escrevendo um arquivo .bat de uma linha para puxar apenas os nomes de arquivos PDF para um novo arquivo de texto.

Até agora, é isso que eu tenho no .bat:

dir *.pdf /b > PDF_LIST.txt

Isso fornece a seguinte saída em um arquivo PDF_LIST.txt:

A.pdf
B.pdf
C.pdf

Gostaria de soltar a parte ".pdf" de cada linha no arquivo txt, pois obviamente já sei que cada arquivo está no formato PDF pelo parâmetro * .pdf na minha instrução dir.

Isso tornaria mais fácil copiar / colar todos os nomes de arquivos diretamente do arquivo de texto em um documento do Word para uma transmissão que estou enviando ao meu cliente. Se você puder sugerir uma maneira melhor ou mais fácil de obter a lista de arquivos sem usar um arquivo em lotes, isso também seria útil.

NoCatharsis
fonte

Respostas:

18

No seu script:

for %%i in (*.pdf) do @echo %%~ni >> PDF_LIST.txt
Pausado até novo aviso.
fonte
Whoa que me surpreende (nunca realmente funcionou com linha de comando). Ok, eu vou tentar. Obrigado!
NoCatharsis
1
Veja help forpara ter alguma estimulação craniana adicional.
Pausado até novo aviso.
Corrigi (o que eu acho que foi) seu erro de digitação no código e executei este comando: para %% i em (* .pdf) faça @echo %% ~ ni >> PDF_LIST.txt Estou recebendo a resposta "%% i foi inesperado no momento "e nenhuma outra saída.
NoCatharsis
2
@NoCatharsis: Desculpe pelo erro de digitação. Na linha de comando, use apenas single %. Use %%no seu arquivo em lotes.
Pausado até novo aviso.
Legal, funciona como um encanto - muito obrigado pela ajuda rápida.
NoCatharsis
0

A maioria dos editores de texto (incluindo o bloco de notas) encontrou e substituiu. Apenas use-o para encontrar todos os ".pdf" e substitua-o por "". Feito :)

Você também pode definir isso como macro no word.

Ensolarado
fonte
Sim, eu uso o Notepad ++ para fazer isso agora - no entanto, eu estava me perguntando se havia uma maneira de cortar mais uma etapa escrevendo-a em um script.
NoCatharsis