未使用 put 的脚本以管理员身份运行,不留下任何文件

未使用 put 的脚本以管理员身份运行,不留下任何文件

我正在尝试以管理员身份运行此脚本。当我以非管理员权限运行它时,日志文件保存在 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 上。

答案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 别无选择仅列举跑步服务 (默认state= active),参见SC /?
  • 查看IF ERRORLEVEL number 降序排列ERRORLEVEL number如果上次程序运行返回退出代码,则指定为真条件等于或更大比指定的数量(IF ERRORLEVEL 0始终有效), 看IF /?;
  • %~dp0扩展%0为驱动器号和路径(包括尾随反斜杠),请参阅call /?。请注意,%~dp0将返回批处理脚本的驱动器和路径,请参阅与批处理脚本相关的链接
  • >> "%~dp0log.txt" SC …- 看重定向

相关内容