如果STRING == STRING,则批量文件BUG

时间:2014-12-07 04:15:56

标签: 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 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

AND SCREEN

http://prntscr.com/5e2fhi

1 个答案:

答案 0 :(得分:0)

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

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

批次需要知道要分组的元素。 "quoting a space-separated string"将该短语分组为一个项目。

<强> BUT

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


正如我所说,%%a这里将是*.pbo文件的名称,因此它永远不会匹配该字符串,您应该能够确定它是{{1} }编辑。 echo的值永远不会与%%a

匹配

将命令的输出分配给变量(在本例中为元变量Wrong private key file)使用

%%r
  • 但是这并没有回答你关于匹配两个字符串的问题。首先,您需要正确分配字符串。

由于我们没有for /f "delims=" %%r in ('%TOOLSPATH%%app2% %key% %%a') do IF "%%r"=="Wrong private key file" echo erreur 身份输出的迹象,因此无法确定此代码是否可行。需要更多信息。

哦 - 请删除你的回答&#34;因为它不是答案,而是评论。


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

stderr

for /f "delims=" %%r in ('%TOOLSPATH%%app2% %key% %%a 2^>^&1') do IF "%%r"=="Wrong private key file" echo erreur 体操将2^>^&1输出重定向到stderrstdout要求插入符号cmd^命令的引号内转义特殊字符>&