Я столкнулся с небольшим затруднением, пытаясь рекурсивно получить только имена файлов (без расширений и путей к файлам). Это сработало для меня в корневой папке:
dir /b
Но когда я добавил / s для рекурсивного сканирования, я также получил пути к файлам перед именами файлов, которые мне не нужны. Есть ли способ получить голые имена файлов из всех подпапок в каталоге?
Я на Windows 7 x64 Я бы предпочел использовать обычную командную строку не PS или VBS
Попробуй это:
Более подробную информацию о том, как работает и что он делает, введите
for /?
источник
>> filename.txt
или
предполагая файл
noquotes.bat
в вашем % PATH% с этим содержимымдля / г подхода объяснил
for /r
рекурсивно просматривает текущий каталог (можно указать каталогfor /r drive:\path\
, предполагается, что текущий каталог) и выполняет команду, указанную do, для каждого файла, соответствующего в наборе(*)
. Набор(.)
будет соответствовать только каталогам. @echo% ~ ni Эта команда работает как есть из приглашения. Удвойте свои кавычки, если вы положите их в пакетный файл. т.е.for /r %%i in (*) do @echo %%~ni
объяснил подход forfiles
/s
перечисляет текущий и все подкаталоги,/c
выполняет команду внутри кавычек@isdir
и@fname
является символом, выводимым в командную строку. Дополнительный пакетный файл
noquotes.bat
помогает, удаляя двойные кавычки с% ~ 1 (параметр 1),forfiles
также позволяет указать путь, с которого следует начинатьforfiles /P C:\Windows ...
источник
Перечислите все файлы, голые, рекурсивно, используя атрибуты (не каталог) (только файлы)
dir / B / S / A: -D
C: \ test \ cache> dir / B / S / A: -D
C: \ test \ cache \ 7 \ 0f \ 7b50ed0522645513da90345120eaf0f7 C: \ test \ cache \ d \ 23 \ 814644aa6a8195c91e54d2f7bb64e23d
источник
dir /b /s
] сканировать рекурсивно, я также получил пути к файлам перед именами файлов, которые мне не нужны ». Итак, вы говорите OP, чтобы попробовать тривиальный вариант того, что они уже пробовали, и ваш ответ демонстрирует что он дает тот же результат, что и при попытке ОП (т. е. не то, что они хотят).