Сценарий без ввода, запущенный от имени администратора, не оставляет файла [закрыто]

Я пытаюсь запустить этот сценарий от имени администратора. Когда я запускаю его без прав администратора, файл журнала сохраняется в C: \ Windows \ System32. Я помещаю в скрипт echo% ~ dp0, и он переходит в текущий каталог.

%~dp0
SC QUERY | FINDSTR "Fax" 
IF ERRORLEVEL 0 SC CONFIG Fax START= DISABLED >> log.txt

Если я жестко настрою файл журнала следующим образом:

%~dp0
SC QUERY | FINDSTR "Fax" 
IF ERRORLEVEL 0 SC CONFIG Fax START= DISABLED >> C:\logs\log.txt

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

0
задан 2 April 2021 в 07:36
1 ответ

Попробуйте следующий фрагмент кода:

@ECHO OFF
SETLOCAL EnableExtensions
SC QUERY state= all | FINDSTR "Fax"
REM alternatively: SC QUERY Fax | FINDSTR "Fax"
IF ERRORLEVEL 2 (
    REM Findstr: Wrong syntax
) else (
    IF ERRORLEVEL 1 (
        REM "Fax": A match not found  
    ) else (
        REM "Fax": A match is found in at least one line of the query
        >> "%~dp0log.txt" SC CONFIG Fax START= DISABLED
    )
)

Объяснение:

  • обратите внимание, что SC QUERY без какой-либо опции перечисляет только запущенный (по умолчанию состояние = активно ), см. SC /? ;
  • проверьте IF ERRORLEVEL номер в порядке убывания как Номер ERRORLEVEL указывает истинное состояние, если последний запуск программы вернул код выхода , равный или больше , чем указанное число (то есть IF ERRORLEVEL 0 равно всегда действителен ), см. IF /? ;
  • % ~ dp0 заменяет % 0 буквой диска и путем (включая обратную косую черту в конце), см. звоните /? . Обратите внимание, что % ~ dp0 вернет диск и путь к пакетному сценарию, см. Ссылки относительно пакетного сценария )
  • >> "% ~ dp0log.txt" SC… - см. перенаправление .
1
ответ дан 24 April 2021 в 01:41

Теги

Похожие вопросы