Назад | Перейти на главную страницу

Проблема со сценарием командной строки

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

Я использую 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.