2011-02-21 3 views
2

Как получить имя папки в цикле for. У меня есть следующая структура каталоговИмя папки в пакетном файле

c:\Main\**FolderName1**\FolderName3\somefile.txt 
c:\Main\**FolderName2**\FolderName4\somefile1.txt 

И я хочу, чтобы получить имя FolderName1 и FolderName2 внутри для цикла.

Это, как я делаю сейчас:

set "errfolderpath=C:\Main\" 
FOR /D /R %errfolderpath% %%K in (.\*) DO (
    SET folderName=%%~nK 
    echo foldername=!folderName! 
) 

когда я запускаю выше программы он печатает имена всех вложенных папок, тогда я просто хочу имя FolderName1 и FolderName2 и не зацикливать остальные папки.

Надеюсь, я смог прояснить ситуацию. Спасибо.

+0

Вам нужно включить еще некоторые детали - то, что именно это, что вы циклически? – Justin

+0

Я обновил детали вопроса. Надеюсь, это поможет – Sahil

ответ

0

Параметр /R folder указывает как стартовую папку, так и рекурсивный поиск, в то время как вам нужен только первый, а не последний.

Таким образом, просто использовать вашу корневую папку с файлом маски, как это:

set "errfolderpath=C:\Main\" 
FOR /D %%K in ("%errfolderpath%*") DO (
    SET folderName=%%~nK 
    echo foldername=!folderName! 
) 
+0

это сработало. спасибо тонну – Sahil

+0

Это отлично работает. Кроме моего каталога есть. в нем, например, Waynes.World, и он только подбирает слово Уэйнса. Какие-либо предложения? – theB3RV

+0

@ theB3RV: '~ n' нужно будет заменить на' ~ nx'. Используя этот скрипт в качестве примера, вторая команда SET должна выглядеть так: 'SET folderName = %% ~ nxK'. Вы можете больше узнать об этих '~' -модификаторах в 'FOR /?'. –

Смежные вопросы