Batch file 命令的语法不正确-IF语句批处理

Batch file 命令的语法不正确-IF语句批处理,batch-file,Batch File,我试图批量执行下面的函数,但我在IF语句中收到一个错误,我一直在尝试修复这个问题,但没有成功 :Method2 set File=%1 set Filename=%2 echo %Filename% pause IF NOT x%Filename:Test=% == x%Filename% ( File >> File_List.txt ) exit /b 2 :End 我知道问题在IF语句中,我一直在调试该问题,但找不到代码的正确语法。在此之后,我想将“Test”替换

我试图批量执行下面的函数,但我在IF语句中收到一个错误,我一直在尝试修复这个问题,但没有成功

:Method2
set File=%1
set Filename=%2
echo %Filename%
pause
IF NOT x%Filename:Test=% == x%Filename%
(
    File >> File_List.txt
)

exit /b 2

:End
我知道问题在IF语句中,我一直在调试该问题,但找不到代码的正确语法。在此之后,我想将“Test”替换为用户的输入参数,以便它可以是任何特定的单词,我想使它看起来像这样

IF NOT x%Filename:%Input%=% == x%Filename%

你能帮忙吗?

我已经找到了解决问题的方法,是的,基本上是
”(“
需要在IF的末尾,它解决了这个问题,对于参数问题,我找到了下面的方法,效果非常好

:Method2
set "File=%1"
set "Filename=%2"
echo %Filename%
set /p "test=: "
pause
IF NOT "%Filename%%test%" == "%Filename%" (
    File >> File_List.txt
)

exit /b 2

:End
:Method2
set File=%1
set Filename=%2
set param=%3
IF NOT "!Filename:%param%=!"=="%Filename%" (
    echo %File% >> File_List.txt
    echo %File% moved
)

我已经为我的问题找到了一个解决方案,是的,基本上,
”(“
需要在IF的末尾,它解决了这个问题,对于参数问题,我发现下面的解决方案非常好

:Method2
set File=%1
set Filename=%2
set param=%3
IF NOT "!Filename:%param%=!"=="%Filename%" (
    echo %File% >> File_List.txt
    echo %File% moved
)
必须与
if
在同一物理行上。如果
if“string1”==“string2”…
更好,因为它处理文件名中的空格(无需使用
x
来确保字符串不为空)。您需要使用
搜索
功能对
延迟扩展
进行变量替换,或者使用
echo%filename%| findstr“%input%”
并使用
errorlevel
进行测试。
必须与
if
在同一物理线上。
if“string1”更好==“string2”…
处理文件名中的空格(无需使用
x
来确保字符串不为空)。您需要使用
search
工具对
delayed expansion
进行检查,或者使用
echo%filename%| findstr”%input%“
并使用
errorlevel
进行测试。