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