Мне нужно найти имя папки командного файла, который я выполняю. Все другие подходы обеспечивают мне полный путь. Мне нужно только имя родительской папки. Кроме того, другие подходы mentioned используют цикл, который довольно длинный и подробный для моих нужд. Есть ли способ узнать имя родительской папки непосредственно через параметры% (или их комбинации)?Поиск имени папки .bat-файла
ответ
Прямой ответ на ваш вопрос: «Нет». Нет прямого метода, использующего только модификаторы расширения без использования цикла FOR или CALL.
Связанная нить в вашем вопросе в значительной степени имеет все, что вам нужно.
Вот два оптимизированных метода, которые очень похожи на то, что уже было опубликовано. Method1 должен быть самым быстрым:
Редактировать - я оптимизирована путем удаления операции подстроки.
Edit2 - я заменял простой FOR вместо FOR/F
@echo off
setlocal
::method 1 using FOR
for %%F in ("%~p0\.") do set "method1=%%~nxF"
if not defined method1 set method1=\
::method 2 using CALL
call :getName "%~p0\." method2
::print results
set method
exit /b
:getName PathWithTrailing\. ReturnVar
set "%~2=%~nx1"
if not defined %~2 set %~2=\
exit /b
Спасибо за разъяснение этого. Второй подход - тот, который более полезен для моего случая. –
@SumitBisht - Я говорил слишком рано. Мне удалось устранить необходимость в операции подстроки, добавив '\ .' в полный путь. Ответ был обновлен. – dbenham
@SumitBisht - Также изменился FOR/F на простой FOR – dbenham
Попробуйте
echo %~dp0
в файле летучей мыши. % 0 - имя командного файла. ~ dp дает вам диск и путь к указанному аргументу.
Нет, это было упомянуто ранее. Выполняя это, я получаю весь путь. Мне нужна только родительская папка. например: C: \ myprogram \ bin \ myfile.bat => выходы bin –
Существует действительно простой способ сделать это. Я знаю, что вы сказали, что вы не хотите, пространный подхода захвата петли, так вот краткое перекручивание подход:
for %%D in (.) do @echo %%~nD
Обратите внимание, что этот код работает только внутри пакетного файл. Вне этого вы должны использовать% вместо %%.
Вы должны зарегистрироваться Rob van der Woude's scripting pages. У него много хорошей информации для сценариев DOS на его сайте.
- 1. Поиск имени каталога или имени папки в пакетном файле
- 2. Поиск имени папки с использованием Eclipse «Поиск в файле»
- 3. Поиск имени и имени
- 4. Поиск по контенту и вывод имени папки в unix
- 5. Обмен веб-службой Поиск для имени пользовательской папки
- 6. Поиск имени папки, начинающегося с «Project» и переименования
- 7. Поиск папки и получение файлов
- 8. Изменение имени папки, matlab
- 9. удаления старейшей папки, выявляя из имени папки
- 10. Поиск папки на сайте
- 11. Поиск каталога папки отладки
- 12. Поиск конкретной папки Outlook
- 13. Поиск файла из папки
- 14. Ввод папки на основе имени в python
- 15. Изменение имени папки проекта C#?
- 16. Как получить папки по имени?
- 17. Получение имени папки с пути
- 18. Изменение имени папки в Xcode
- 19. Пространство в имени папки DocumentRoot
- 20. Перенаправление/htaccess без имени папки
- 21. Получение имени папки с пути
- 22. Удаление папки на основе имени
- 23. имени Анализировать папки в Баше
- 24. Изменение имени папки на Github
- 25. Поиск новейшей папки в каталоге вызывает «.». и ".." вместо новой папки
- 26. % символов неожиданно добавлены в середине имени файла или имени папки
- 27. Поиск Контакты По имени
- 28. Поиск по имени
- 29. Поиск имени в PHP
- 30. Поиск имени javascript
возможного дубликат [.bat текущего имени папки] (http://stackoverflow.com/questions/3848597/ bat-current-folder-name) –
Этот вопрос имеет принятый ответ, который был снабжен итерацией. Я ищу параметр/любой другой подход, который не является длительным. –
Посмотрите на второй ответ. (Принятый ответ часто является не единственной полезной информацией.) –