Как не показывать путь к файлу с помощью команды dir / b / s в командном файле

541
Mark Deven

Есть ли способ обойти отображение пути к файлу при использовании 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
Опустите `/ S` ** Если ** есть файлы в подкаталогах с одинаковыми именами, как бы вы их различали? В противном случае проанализируйте вывод dir с помощью `for / f` и используйте модификатор` ~ nx`, чтобы получить только имя + расширение `for / f" delims = "% A in ('dir / B / S" C: \ WinPE_amd64 "' ) do @ Echo =% ~ nxA` LotPings 5 лет назад 0
Моя команда Dir не должна различать их, так как я затем сортирую новые и старые файлы. Это прекрасно, спасибо. Может быть, опубликовать это в качестве ответа, чтобы вы получили кредит Mark Deven 5 лет назад 0

1 ответ на вопрос

2
LotPings

Разобрать вывод dir с помощью for /fи использовать~nx модификатор для возврата только name + extension

В строке 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 
Единственная проблема заключается в том, что это очень медленный скрипт для DIR на 2000 строк. Mark Deven 5 лет назад 0
все же, вероятно, лучшее, что я получу из партии Mark Deven 5 лет назад 0
Синтаксический анализ `for / f` включает второй экземпляр cmd.exe. Я добавляю другой способ ответа LotPings 5 лет назад 0
Ага спасибо, когда сомневаешься использовать силовую оболочку. Mark Deven 5 лет назад 0