Batch file 如果字符串==字符串,则批处理文件错误
我不知道怎么去检查。 这是一个脚本,用于列出记录中包含的扩展名为.pbo的文件,并将其移动到第三方软件中,以应用安全签名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
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