Как мне найти текущий каталог пакетного файла, а затем использовать его для пути?
158506 просмотра
4 ответа
У меня есть пакетный файл, который я собираюсь разослать нашим клиентам для запуска задачи программного обеспечения.
Мы распространяем их как папку или .zip
с файлами внутри. Внутри находятся пакетные файлы и другая папка с файлами, необходимыми для запуска пакета.
Обычно, когда вы делаете пакет, вы указываете путь к файлам. Но я не буду знать, где находятся файлы. Файлы по-прежнему будут храниться в главной папке, но мне нужно, чтобы пакет нашел эту папку для запуска файлов.
Так, например: если у них есть главная папка на рабочем столе, и они запускают ее, это должно быть что-то вроде "C:\Users\Username\Desktop"
запуска. У вас будет пакетный CD в этом месте.
Но что, если они запускают его из документов? Я не знаю имени пользователя, поэтому мне нужно, чтобы пакет нашел это. Любой код и / или инструкции будут великолепны.
Автор: Ryan Barber Источник Размещён: 13.11.2019 11:46Ответы (4)
85 плюса
Нет необходимости знать, где находятся файлы, потому что при запуске файла bat рабочий каталог является каталогом, в котором он был запущен («главная папка»), поэтому, если у вас есть такая структура:
.\mydocuments\folder\mybat.bat
.\mydocuments\folder\subfolder\file.txt
И пользователь запускает «mybat.bat», рабочий каталог - «. \ Mydocuments \ folder», поэтому вам нужно только написать имя подпапки в вашем скрипте:
@Echo OFF
REM Do anything with ".\Subfolder\File1.txt"
PUSHD ".\Subfolder"
Type "File1.txt"
Pause&Exit
В любом случае, рабочий каталог хранится в переменной «% CD%», а каталог, в котором запущена летучая мышь, хранится в аргументе 0. Тогда, если вы хотите узнать рабочий каталог на любом компьютере, вы можете сделать:
@Echo OFF
Echo Launch dir: "%~dp0"
Echo Current dir: "%CD%"
Pause&Exit
Автор: ElektroStudios
Размещён: 27.04.2013 07:15
59 плюса
Ответ ElektroStudios немного вводит в заблуждение.
«Когда вы запускаете bat-файл, рабочий каталог - это каталог, в котором он был запущен». Это верно, если пользователь нажимает на пакетный файл в проводнике.
Однако, если сценарий вызывается из другого сценария с помощью команды CALL, текущий рабочий каталог не изменяется.
Таким образом, внутри вашего скрипта лучше использовать% ~ dp0subfolder \ file1.txt
Также обратите внимание, что% ~ dp0 заканчивается обратной косой чертой, когда текущий скрипт не находится в текущем рабочем каталоге. Таким образом, если вам нужно имя каталога без завершающей обратной косой черты, вы можете использовать что-то вроде
call :GET_THIS_DIR
echo I am here: %THIS_DIR%
goto :EOF
:GET_THIS_DIR
pushd %~dp0
set THIS_DIR=%CD%
popd
goto :EOF
Автор: Henning
Размещён: 29.10.2013 05:29
45 плюса
Вы также можете сделать
Pushd "%~dp0"
Что также учитывает запуск с пути unc.
Автор: Matt Williamson Размещён: 27.04.2013 06:077 плюса
Попробуй в своей партии
set "batchisin=%~dp0"
который должен установить переменную в местоположение вашего пакета.
Автор: Magoo Размещён: 27.04.2013 05:54Вопросы из категории :
- file Как получить список каталогов в C?
- file Динамически загружать файл JavaScript
- file Find number of files with a specific extension, in all subdirectories
- file Поиск и замена строки в файле в Python
- batch-file Как я могу передать аргументы в командный файл?
- batch-file Как получить результат команды в переменной в Windows?
- batch-file Как я могу отобразить новую строку в командном файле?
- batch-file Остановить и запустить службу через пакетный или cmd-файл?
- directory Get the source directory of a Bash script from within the script itself
- directory Как я могу добавить пустой каталог в Git-репозиторий?
- directory Список каталогов в Python
- directory Как удалить недопустимые символы из путей и имен файлов?
- find Как искать многострочный шаблон в файле?
- find Семантическая разница между «Найти» и «Поиск»?
- find Как я могу найти элементы управления WPF по имени или типу?
- find Как применить команду оболочки ко многим файлам во вложенных (и плохо экранированных) подкаталогах?
- cd Как запустить 'cd' в сценарии оболочки и оставаться там после завершения сценария?
- cd "CD" не работает в сценарии оболочки
- cd Поднимитесь на несколько каталогов в Linux
- cd Одна команда для создания и изменения каталога