If statement 如果计算机名包含
我需要创建一个批处理文件,仅当计算机名包含某些字符串时,才能在Active Directory中移动计算机名对象,如:If statement 如果计算机名包含,if-statement,batch-file,contains,computer-name,If Statement,Batch File,Contains,Computer Name,我需要创建一个批处理文件,仅当计算机名包含某些字符串时,才能在Active Directory中移动计算机名对象,如: If %computername% contains "LAP" ( dsmove "CN=%computername%,CN=Computers,DC=domain,DC=local" -newparent"OU=**Laptops**,OU=Computers,OU=Company,DC=domain,DC=local" ) If %computername%
If %computername% contains "LAP"
( dsmove "CN=%computername%,CN=Computers,DC=domain,DC=local" -newparent"OU=**Laptops**,OU=Computers,OU=Company,DC=domain,DC=local" )
If %computername% contains "DESK"
(dsmove "CN=%computername%,CN=Computers,DC=domain,DC=local" -newparent "OU=**Desktops**,OU=Computers,OU=Company,DC=domain,DC=local" )
请问正确的命令是什么
set check_computername=%computername:LAP=%
if "%check_computername%" EQU "%computername%" (
echo computer name contains "LAP"
) else (
echo computer name does not contain "LAP"
)
您可以将您的资料放入if
和else
块中
不区分大小写的解决方案:
echo %check_computername%| Find /I "LAP" >nul 2>&1 || echo does not contain LAP
echo %check_computername%| Find /I "LAP" >nul 2>&1 && echo does not contain LAP
setlocal enabledelayedexpansion
set nameSearch=Lap
set checkComputerName=!computername:%nameSearch%=!
if "%checkComputerName%" NEQ "%computername%" (
echo %nameSearch% found in %computername%
) else (
echo %nameSearch% not found in %computername%
)
您可以将您的资料放入if
和else
块中
不区分大小写的解决方案:
echo %check_computername%| Find /I "LAP" >nul 2>&1 || echo does not contain LAP
echo %check_computername%| Find /I "LAP" >nul 2>&1 && echo does not contain LAP
setlocal enabledelayedexpansion
set nameSearch=Lap
set checkComputerName=!computername:%nameSearch%=!
if "%checkComputerName%" NEQ "%computername%" (
echo %nameSearch% found in %computername%
) else (
echo %nameSearch% not found in %computername%
)
逻辑必须颠倒过来。下面是一个不区分大小写的解决方案:
echo %check_computername%| Find /I "LAP" >nul 2>&1 || echo does not contain LAP
echo %check_computername%| Find /I "LAP" >nul 2>&1 && echo does not contain LAP
setlocal enabledelayedexpansion
set nameSearch=Lap
set checkComputerName=!computername:%nameSearch%=!
if "%checkComputerName%" NEQ "%computername%" (
echo %nameSearch% found in %computername%
) else (
echo %nameSearch% not found in %computername%
)
逻辑必须颠倒过来。下面是一个不区分大小写的解决方案:
echo %check_computername%| Find /I "LAP" >nul 2>&1 || echo does not contain LAP
echo %check_computername%| Find /I "LAP" >nul 2>&1 && echo does not contain LAP
setlocal enabledelayedexpansion
set nameSearch=Lap
set checkComputerName=!computername:%nameSearch%=!
if "%checkComputerName%" NEQ "%computername%" (
echo %nameSearch% found in %computername%
) else (
echo %nameSearch% not found in %computername%
)
今天遇到这个问题,我就是这样解决的 假设您对台式机、笔记本电脑等有不同的名称(DESKTOP0001、笔记本电脑0001)等,则此方法将很好地工作 您要做的是获取名称的前几个字符,您可以在变量中使用:x,y来执行此操作 范例
echo %compuername:~0,6%
输出为DESKTO(从位置0开始的前6个字符)
(echo%computername:~1,6%会给你ESKTOP)
快速检验
if %computername:~0,6% == DESKTO echo yes-Desktop
所以我用
if %computername:~0,6% == DESKTO goto Desktop
if %computername:~0,6% == LAPTOP goto Laptop
goto end
:Desktop
enter Desktop commands here
goto end
:Laptop
enter Laptop commands here
goto end
:end
今天遇到这个问题,我就是这样解决的 假设您对台式机、笔记本电脑等有不同的名称(DESKTOP0001、笔记本电脑0001)等,则此方法将很好地工作 您要做的是获取名称的前几个字符,您可以在变量中使用:x,y来执行此操作 范例
echo %compuername:~0,6%
输出为DESKTO(从位置0开始的前6个字符)
(echo%computername:~1,6%会给你ESKTOP)
快速检验
if %computername:~0,6% == DESKTO echo yes-Desktop
所以我用
if %computername:~0,6% == DESKTO goto Desktop
if %computername:~0,6% == LAPTOP goto Laptop
goto end
:Desktop
enter Desktop commands here
goto end
:Laptop
enter Laptop commands here
goto end
:end
存在逻辑错误:将EQU更改为NEQ或调整ECHOsNo。我的计算机名中包含“LAP”。我试着运行这个脚本,它说计算机名不包含“LAP”。@npocmaka解决方案应该有效,注意替换是区分大小写的!那么,在区分大小写的情况下,如何做到这一点呢?在进行比较之前,先将计算机名转换为大写。请注意,存在一个逻辑错误:将EQU更改为NEQ或调整ECHOsNo。我的计算机名中包含“LAP”。我试着运行这个脚本,它说计算机名不包含“LAP”。@npocmaka解决方案应该有效,注意替换是区分大小写的!那么如何区分大小写呢?在比较之前先将计算机名转换为大写。问题是关于
string contains
,问题是关于string contains
你解决了问题string contains
,问题是关于string contains