Я работаю над сценарием пакетного файла в течение нескольких недель, который должен автоматизировать некоторые рутинные задачи, которые мне нужно выполнять во время моей работы. Однако я наткнулся на проблему, которую еще не смог решить.
Я использую USB-накопитель, на котором есть скрипт и другое программное обеспечение (.exe). Сценарий требует, чтобы вы запустили его в режиме администратора, чтобы он мог получить доступ к определенным службам, таким как служба времени Windows или служба обновления Windows ...
Теперь я заметил, что когда вы запускаете скрипт в режиме администратора, его начальный каталог - C: \ Windows \ System32.
Во время этого сценария я хочу запустить программу, которая также находится на флешке. Однако не находит эту программу. Я мог бы записать путь к точному месту на флешке. Но это не сработает, потому что флешка используется на разных компьютерах и буква диска не всегда совпадает.
Короче говоря, я ищу способ запустить командный файл (который находится на USB-устройстве) в режиме администратора и заставить этот скрипт автоматически запускать программу (также на USB-устройстве).
Заранее спасибо! Демпси
PS: Если возможно, кто-нибудь сможет объяснить, как я могу заставить скрипт записывать все в текстовый файл? Имейте в виду, что в скрипте много команд. Было бы неплохо, если бы весь вывод был записан в текстовый файл и сохранен на том же USB-устройстве.
Добавьте эти строки в начало вашего скрипта:
@setlocal enableextensions
@cd /d "%~dp0"
Первая строка включает переменные среды, а вторая строка - это специальная переменная, которая ссылается на текущий каталог запускаемого скрипта.
Вот хорошая разбивка по пользователям Wilx в этом ответе:
cd -- This is change directory command.
/d -- This switch makes cd change both drive and directory at once. Without it you would have to do cd %~d0 & cd %~p0.
%~dp0 -- This can be dissected further into three parts:
%0 -- This represents zeroth parameter of your batch script. It expands into the name of the batch file itself.
%~0 -- The ~ there strips double quotes (") around the expanded argument.
%dp0 -- The d and p there are modifiers of the expansion. The d forces addition of a drive letter and the p adds full path.