如何匹配批处理文件中的命令行参数

时间:2017-10-21 20:38:45

标签: batch-file

以下脚本命令检查命令行参数%1与固定字ala

的匹配情况
   <code>
        @echo off
    set one=%1
    set two=%2
    If NOT "%one%"=="%one:ala=%" ( echo the first argument contains the word "ala")
    else ( echo no matching ! ) 
    </code>

如何用命令行中的参数%2替换固定字“ala”。 (因为简单的替换ala与%2不起作用)。 有没有更好的解决方案来比较参数字符串?

2 个答案:

答案 0 :(得分:0)

您需要使用延迟扩展来完成该类型的字符串替换。

@echo off
setlocal enabledelayedexpansion
set "one=%~1"
set "two=%~2"
If NOT "%one%"=="!one:%two%=!" (
    echo the first argument contains the word "%two%"
) else ( 
    echo no matching
)   

你也可以使用CALL命令的技术在没有延迟扩展的情况下完成它。

@echo off
set "one=%~1"
CALL set "two=%%one:%~2=%%"
If NOT "%one%"=="%two%" (
    echo the first argument contains the word "%two%"
) else ( 
    echo no matching
)

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
ECHO %~1|FIND "%~2">NUL
IF ERRORLEVEL 1 (
 ECHO "%~2" NOT found IN "%~1"
) ELSE (
 ECHO "%~2" WAS found IN "%~1"
)

GOTO :EOF

使用find工具。这可以避免delayedexpansion但相对较慢。