Batch file 如果字符串==字符串,则批处理文件错误

Batch file 如果字符串==字符串,则批处理文件错误,batch-file,Batch File,我不知道怎么去检查。 这是一个脚本,用于列出记录中包含的扩展名为.pbo的文件,并将其移动到第三方软件中,以应用安全签名 for %%a in (*.pbo) do ( echo %%a %TOOLSPATH%%app2% %key% %%a :: DOES NOT WORK, WHY ? :: DOES NOT WORK, WHY ? :: DOES NOT WORK, WHY ? IF %%a==Wrong private key file

我不知道怎么去检查。 这是一个脚本,用于列出记录中包含的扩展名为.pbo的文件,并将其移动到第三方软件中,以应用安全签名

for %%a in (*.pbo) do (
    echo %%a
    %TOOLSPATH%%app2% %key% %%a

    :: DOES NOT WORK, WHY ?
    :: DOES NOT WORK, WHY ?
    :: DOES NOT WORK, WHY ?
    IF %%a==Wrong private key file echo Error please restart tools
)
我的完整代码

 @echo off
    :: Defini le chemin du dossier sur la machine
    SET TOOLSPATH=%~dp0

    :: Defini les 2 fichiers nécéssaire à la création des signatures
    SET app1=bin\DSCreateKey.exe
    SET app2=bin\DSSignFile.exe
    SET key=test.biprivatekey
    SET corrompu=Votre logiciel est corrompu, merci de prendre contact avec @Flolax

    IF NOT EXIST %TOOLSPATH%%app1% (
        echo -----------ERREUR-----------
        echo %TOOLSPATH%%app1% est introuvable
        echo.

        echo %corrompu%
    )

    IF NOT EXIST %TOOLSPATH%%app2% (
        echo -----------ERREUR-----------
        echo %TOOLSPATH%%app1% est introuvable
        echo.

        echo %corrompu%
    )

    cd %TOOLSPATH%\addons

    for %%a in (*.pbo) do (
        echo %%a
        %TOOLSPATH%%app2% %key% %%a

        IF %%a==Wrong private key file echo erreur
    )

    pause
和屏幕

批处理需要知道哪些元素要分组。引用空格分隔的字符串将短语分组为一个项目

但是

%%a此处将是*.pbo文件的名称,因此它永远不会与该字符串匹配

正如我所说,%%a在这里将是一个*.pbo文件的名称,因此它将永远不会与该字符串匹配,您应该能够确定它正在被回音。%%a的值永远不会与错误的私钥文件匹配

要将命令的输出分配给变量,在这种情况下,元变量%%r使用

但这并不能回答你关于匹配两个字符串的问题。首先,您需要正确分配字符串。 由于我们没有app2的标识输出的指示,因此也无法确定该代码是否有效。我需要更多的信息

哦,请删除你的答案,因为它不是答案,而是评论

啊-应用程序向stderr生成消息是不寻常的,即使它在逻辑上是正确的。试试这个

for /f "delims=" %%r in ('%TOOLSPATH%%app2% %key% %%a 2^>^&1') do IF "%%r"=="Wrong private key file" echo erreur

2^>^&1体操将stderr输出重定向到stdout。cmd需要插入符号^来转义for/f命令中的特殊字符>和&。

您好,谢谢您的回复。您的脚本不起作用谢谢您的帮助,不幸的是它不起作用
for /f "delims=" %%r in ('%TOOLSPATH%%app2% %key% %%a') do IF "%%r"=="Wrong private key file" echo erreur
for /f "delims=" %%r in ('%TOOLSPATH%%app2% %key% %%a 2^>^&1') do IF "%%r"=="Wrong private key file" echo erreur