Como não mostrar o caminho do arquivo com o comando dir / b / s no arquivo de lote

1

Existe alguma maneira que eu possa ignorar exibindo caminhos de arquivo ao usar o comando dir /b /s em um arquivo?
Atualmente, quando executo dir /b /s C:\WinPE_amd64 >dir.txt , ele gera algo assim:

C:\WinPE_amd64\file.txt
C:\WinPE_amd64\secondfile.txt
C:\WinPE_amd64\Folder\AnotherFile.txt

O que eu quero é algo assim:

file.txt
secondfile.txt
AnotherFile.txt
    
por Mark Deven 20.06.2018 / 22:48

1 resposta

2

Analise a saída do diretório com for /f e use o modificador ~nx para retornar apenas o nome + extensão

Na linha do cmd:

(for /f "delims=" %A in ('dir /B/S "C:\WinPE_amd64"') do @Echo=%~nxA)>dir.txt

Em um lote, o dobro do sinal percentual do para metavariable

@Echo off
( for /f "delims=" %%A in ('dir /B/S "C:\WinPE_amd64"') do Echo=%%~nxA
) >dir.txt

É uma questão de formatar a preferência (ou para evitar linhas muito longas)

@Echo off
( for /f "delims=" %%A in (
    'dir /B/S "C:\WinPE_amd64"'
  ) do Echo=%%~nxA
) >dir.txt

EDITAR uma alternativa possivelmente mais rápida é um for /r

(For /r "C:\WinPE_amd64" %A in (*) Do @Echo=%~nxA)>dir.txt

Outra alternativa envolvendo um comando powershell

powershell -nop -c "(dir 'C:\WinPE_amd64' -r -file).Name" >dir.txt
    
por 20.06.2018 / 23:38