1. Используйте небольшой скрипт, чтобы все было в списке, но переходы не будут выполняться.
Хорошо работает на Windows 7, в отличие от варианта ниже в этом ответе
давайте назовем это dnj.cmd
(как в Dir No Junctions)
@(SETLOCAL ENABLEEXTENSIONS
ECHO OFF
CHCP 65001>NUL
IF "%~1"=="" (CALL :listDir .) ELSE CALL :listDir %1
EXIT /B
)
:listDir <path>
( FOR /F "usebackq delims=" %%F IN (`DIR %1 /B /A`) DO ECHO %~1\%%~F
FOR /F "usebackq delims=" %%F IN (`DIR %1 /B /AD-L`) DO CALL :listDir "%~1\%%~F"
EXIT /B )
Первый FOR/DIR для вывода, второй FOR/DIR для рекурсии. Таким образом, вы также можете настроить выходные параметры (в частности, аргументы DIR и ECHO). Например, если вам нужен только плоский список файлов на выходе без каталогов, используйте
( FOR /F "usebackq delims=" %%F IN (`DIR %1 /B /A-D`) DO ECHO %%~F
вместо первого ЗА.
Вызов: dnj.cmd
path
Перенаправление вывода работает так же, как и с обычным DIR, поэтому
cmd /C "dnj.cmd "%USERPROFILE%" | CLIP"
работает из командной строки Win+R ("Выполнить").
2. Если вы используете Windows 10, используйте DIR /S / AL
Таким образом, соединения не будут перечислены, и не будут повторяться с /S. В Windows 7 DIR /S /AD-L повторяет соединения.Не уверен насчет 8 /8.1.
пакет с выводом в текстовый файл:
CHCP 65001 & REM for UTF-8
DIR %* /B /S /A-L > out.txt
(передать путь и дополнительные аргументы DIR в качестве пакетных аргументов)
cmd.exe в буфер обмена (может быть вызван через Win+R):
cmd /C "CHCP 65001 & DIR "%USERPROFILE%" /B /S /A-L | CLIP"
Буфер обмена по умолчанию является юникодом, но без CHCP заранее вывод DIR находится в кодовой странице OEM, поэтому некоторые символы могут быть потеряны.
Кавычки после /C требуются синтаксисом CMD, несмотря на то, что это выглядит странно с внутренними кавычками около %USERPROFILE%
.