1

Есть ли способ обойти отображение путей к файлам при использовании команды dir /b /s в файл?
В настоящее время, когда я запускаю dir /b /s C:\WinPE_amd64 >dir.txt он выводит что-то вроде этого:

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

Я хочу что-то вроде этого:

file.txt
secondfile.txt
AnotherFile.txt

1 ответ1

2

Разобрать вывод dir с помощью for /f и использовать модификатор ~nx , чтобы получить только имя + расширение

В строке cmd:

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

В пакете удвоить знак процента для метабарита

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

Это вопрос предпочтения форматирования (или во избежание слишком длинных строк)

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

РЕДАКТИРОВАТЬ возможно более быструю альтернативу for /r

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

Еще одна альтернатива обертывания команды powershell

powershell -nop -c "(dir 'C:\WinPE_amd64' -r -file).Name" >dir.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .