Здравствуйте.
Написала программу по конвертации файлов .pdf в .xls с использованием приложения Soda PDF Desktop (через командную строку). Программа готова, кроме того нюанса, что чтобы установить ее на другой компьютер, нужно добавить путь к Soda (C:\Program Files\Soda PDF Desktop) в переменную PATH. Как это сделать толково описано в статье авторства Вадима Стеркина : https://www.outsidethebox.ms/12669/.
Мой же вопрос в следующем : возможно ли автоматизировать = создать программу, добавляющую нужный путь в перменную PATH (для установки моей программы на другие компьютеры) ?
(я не программист, только-только учусь).
СПАСИБО
- Valentina Lemiakina спросил(а) 4 года назад
- последняя редакция 4 года назад
- Войдите для отправки комментариев
Проще всего использовать командные файлы с командой SETX. Примеры ниже берут переменную PATH текущего пользователя или системы и добавляют к ней желаемую папку C:\Program Files\Soda PDF Desktop. Скопируйте код в блокнот и сохраните с именем «path.cmd», заключая имя в кавычки.
Командный файл для пользовательской переменной
@echo off
for /f "usebackq tokens=2,*" %%A in (`reg query HKCU\Environment /v PATH`) do set mypath=%%B
setx PATH "C:\Program Files\Soda PDF Desktop;%mypath%"
exit
Файл нужно запускать под каждым пользователем.
Командный файл для системной переменной
@echo off
for /f "usebackq tokens=2,*" %%A in (`reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH`) do set mypath=%%B
setx /m PATH "C:\Program Files\Soda PDF Desktop;%mypath%"
exit
Ключ /m указывает команде setx на добавление в системную переменную. Файл можно запускать один раз для всех пользователей, но от имени администратора, а для вступления изменений в силу нужна перезагрузка.
Разъяснение выбранного метода решения задачи
Я сознательно не использую вариант ниже, который часто рекомендуют в сети как самый простой и короткий.
setx /m PATH "%PATH%;C:\myfolder"
Причин три:
-
Если набрать в командной строке PATH, то легко заметить, что переменная %PATH% объединяет системную переменную с переменной текущего пользователя. Именно такое сочетание команда выше добавляет в системную переменную наряду с желаемой папкой. Это скорее не нужно, чем нужно.
-
Также видно, что в этом случае переменные раскрываются в абсолютные пути (%systemroot% → C:\Windows) и в таком виде записываются в реестр, а параметр превращается в строковый.
-
Для выполнения команды нужны права администратора.
Примечания о тестировании
Если будете тестировать в командной строке (а не запускать из файла), во второй строке кода замените двойные знаки процента %% на одинарные %.
Перед тестами рекомендую экспортировать разделы реестра, указанные в командном файле.
- Vadim Sterkin ответил(а) 4 года назад
- Войдите для отправки комментариев
Сначала войдите.