我在学区工作,我们需要远程删除个人资料。我们正在使用RemProf。如果遇到两个特定域或名称中具有特定标识符的设备,我需要脚本失败。我希望它以错误代码退出。这将让我们的现场工作人员知道他们已经尝试对由于域或名称限制的设备运行RemProf。这就是我所拥有的。带有-SAD-
的行标识设备名称的一部分。如果遇到错误级别1,则此脚本不会退出。它继续使用RemProf并删除配置文件。我很感激任何指导。
Reg Query HKLM\System\CurrentControlSet\services\Tcpip\Parameters /v Hostname /f -SAD-
if %ERRORLEVEL%==1 exit /b 9
Reg Query HKLM\System\CurrentControlSet\services\Tcpip\Parameters /v Domain /f teach.inst.schools
if %ERRORLEVEL%==1 exit /b 0
Reg Query HKLM\System\CurrentControlSet\services\Tcpip\Parameters /v Domain /f admin.schools
if %ERRORLEVEL%==1 exit /b 9
Reg Query HKLM\System\CurrentControlSet\services\Tcpip\Parameters /v Domain /f elem.inst.schools
if %ERRORLEVEL%==0 goto Run_RemProf
Reg Query HKLM\System\CurrentControlSet\services\Tcpip\Parameters /v Domain /f sec.inst.schools
if %ERRORLEVEL%==0 goto Run_RemProf
:Run_RemProf
Rem Deleteing profiles and abandoned files
RemProf.exe /D: /EXCLUDE:Public,Default,Administrator,SOL
RemProf.exe /AD: /EXCLUDE:Public,Default,Administrator,SOL
答案 0 :(得分:0)
您的Reg Query HKLM\System\CurrentControlSet\services\Tcpip\Parameters /v Hostname /f -SAD-
始终会返回Hostname
值以及相应的errorlevel
返回值0
- 成功(或1
- 失败),无论<{1}}开关中提供的数据或模式。
/f
对于将reg query /?
和/V
个切换放在一起有点简短:
/F
Another official source说 /v Queries for a specific registry key values.
If omitted, all values for the key are queried.
Argument to this switch can be optional only when specified
along with /f switch. This specifies to search in valuenames only.
/f Specifies the data or pattern to search for.
Use double quotes if a string contains spaces. Default is "*".
切换:
/V
指定要使用的注册表值名称 查询。如果省略,则返回KeyName的所有值名称。 如果/v <ValueName>
选项为ValueName
,则此参数的/f
为可选 也用过。
可选? Read dictionary.com
definitions for adjective optional:
事实上,ValueName
for /V
parameter should be omitted if the /f
option is also used(非官方):
要搜索部分注册表,请使用以下语法:
REG Query HKxx\subkey [/D|/K|/V] /F "search_pattern" [/S] [/E] [/C]
使用
/D
搜索数据(即注册表值的值),/K
搜索匹配的键名/V
以搜索匹配值 这些开关的名称,或者没有一个用于搜索键,值和数据。
你可以:
findstr
command检查ERRORLEVEL
,或示例脚本(部分注释):
@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
set "_pattern=%~1" for demonstration purposes: first line parameter
if not defined _pattern set "_pattern=-SAD-"
rem next `_KeyName` variable keeps `reg query` line length <80 chars
set "_KeyName=HKLM\System\CurrentControlSet\services\Tcpip\Parameters"
echo(
echo `findstr` approach:
Reg Query "%_KeyName%" /v Hostname | findstr /I /C:"%_pattern%" >NUL
if errorlevel 1 (
echo `Hostname` data DOES NOT CONTAIN specified string "%_pattern%"
) else (
echo `Hostname` data CONTAINS specified string "%_pattern%"
)
echo(
echo `substring` approach:
rem set `_Hostname` and `_Domain`
for /F "tokens=1,2,*" %%G in ('
Reg Query "%_KeyName%" ^| findstr /I /R "\<Domain\> \<Hostname\>"
') do set "_%%G=%%I"
call set "_auxiliary=%%_Hostname:%_pattern%=%%"
if "%_auxiliary%"=="%_Hostname%" (
echo `Hostname` data DOES NOT CONTAIN specified string "%_pattern%"
) else (
echo `Hostname` data CONTAINS specified string "%_pattern%"
)
<强>输出强>:
==> D:\bat\SO\39359057.bat -SAD-
`findstr` approach:
`Hostname` data DOES NOT CONTAIN specified string "-SAD-"
`substring` approach:
`Hostname` data DOES NOT CONTAIN specified string "-SAD-"
==> D:\bat\SO\39359057.bat %computername%
`findstr` approach:
`Hostname` data CONTAINS specified string "myNewPC"
`substring` approach:
`Hostname` data CONTAINS specified string "myNewPC"
==>