Уже несколько недель я работаю над скриптом пакетного файла, который должен автоматизировать некоторые рутинные задачи, которые мне нужно выполнять во время работы. Тем не менее, я наткнулся на проблему, которую я еще не смог решить.

Я использую USB-флешку, которая несет скрипт и некоторые другие программы (.exe). Сценарий требует, чтобы вы запустили его в режиме администратора, чтобы он мог получить доступ к определенным службам, таким как служба времени Windows или служба Windows Update ...

Теперь я заметил, что когда вы запускаете скрипт в режиме администратора, его начальный каталог - C:\Windows\System32

Во время этого сценария я хочу запустить программу, которая также находится на флешке. Однако он не находит эту программу. Я мог бы написать путь к точному месту на флешке. Но это не сработает, потому что флешка используется на разных компьютерах и буква диска не всегда совпадает.

Короче говоря, я ищу способ запуска пакетного файла (который находится на USB-устройстве) в режиме администратора и этот сценарий запускает программу (также на USB-устройстве) автоматически.

Заранее спасибо! Dempsey

PS: Если возможно, кто-нибудь сможет объяснить, как я могу заставить скрипт записывать все в текстовый файл? Имейте в виду, что в скрипте много команд. Было бы хорошо, чтобы все выходные данные были записаны в текстовый файл и сохранены на том же USB-устройстве.

2 ответа2

0

Добавьте эти строки в начало вашего скрипта:

@setlocal enableextensions @cd /d "% ~ dp0"

Первая строка включает переменные среды, а вторая - специальная переменная, которая ссылается на текущий каталог запускаемого скрипта.

Вот хороший ответ пользователя wilx в этом ответе:

CD - это команда изменения каталога. /d - этот ключ заставляет cd менять одновременно диск и каталог. Без него вам пришлось бы обходиться cd% ~ d0 & cd% ~ p0. % ~ dp0 - это можно разделить на три части:% 0 - это представляет нулевой параметр вашего пакетного сценария. Он расширяется до имени самого командного файла. % ~ 0 - ~ там обнуляет двойные кавычки (") вокруг расширенного аргумента. % dp0 - в d и p есть модификаторы расширения. D вызывает добавление буквы диска, а p добавляет полный путь.

0

Для регистрации деталей вашего командного файла используйте оператор «>». Например, если имя вашего пакетного файла - abc.bat, а нужный файл журнала - log.txt. Затем попробуйте, как указано ниже:

abc.bat> log.txt

Это создаст новый файл журнала с именем log.txt в том же каталоге, где выполняется пакет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .