Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 如果计算机名包含_If Statement_Batch File_Contains_Computer Name - Fatal编程技术网

If statement 如果计算机名包含

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%

我需要创建一个批处理文件,仅当计算机名包含某些字符串时,才能在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% 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