在FroG GUI中传递带有空格的Windows批处理变量?

时间:2018-03-10 17:24:11

标签: xml user-interface batch-file command-line window

FroG可帮助您基于XML为Windows批处理(.bat)文件构建GUI。

E.g。设置三个变量并打印到文本文件,所以.bat看起来像这样:

@echo off &setlocal

setlocal EnableDelayedExpansion

set var1=%1
shift
set var2=%1
shift
set var3=%1

echo %var1% %var2% %var3%> test.txt

(据我所知,你必须通过shift让FroG在变量之后赶上来?我无法以任何其他方式使其工作,我从构建在FroG上的一些样本中获取了这个

GUI代码如下所示:

<form caption="test GUI" program="test.bat" icon="" showconsole="false" width="514" url="" description="" author="">
    <control type="tabset">
        <tabsheet caption="General" active="true">
            <control type="groupbox" caption=" Basic info " fontstyle="bold">
                <control type="edit" caption=" Variable 1 " commandline="" width="100"/>
                <control type="edit" caption=" Variable 2 " commandline="" width="100"/>
                <control type="edit" caption=" Variable 3 " commandline="" width="100"/>
            </control>
        </tabsheet>
    </control>
</form >

GUI界面如下所示: enter image description here

(在三个字段中输入的值将传递到底线test.bat ...,就像我看到的那样,shift忽略最后一个变量有空格并仅打印three ,因此底线three four必须在引号中,但如果您手动添加引号,它们也会打印到我们不想要的文件中,请参阅下面的第4段)

正如您所看到的,我们已经设置了值,var1是&#39;一个&#39;,var2是&#39;两个&#39;和var3包含一个空格,并且是三个四个&#39;

  1. 单击执行后,test.txt中的输出为one two three。但它错过了四个&#39;来自var3。

  2. 现在我尝试在.bat中包装我的变量,例如set "var3=%1"但得到的结果相同。

  3. set var3="%1"但它会打印出三个&#39;引号one two "three"仍然没有&#39;四&#39;

  4. 我尝试进入GUI&#39;三四&#39;使用"three four"之类的引号,然后打印“&#39;四个”部分,但它错了,因为它打印了我们刚刚输入的引号,我们不想要one two "three four"

  5. 预期结果应为one two three four,空格且无引号。

    更新

    进行了一些测试并发现我们可以在没有shift的情况下实现相同的效果,但是像这样:

    set var1=%1
    set var2=%2
    set var3=%3
    

    同样的问题仍然存在,打印在cli或文件上,如果变量不在GUI上的引号中,它会跳过最后一个字符串,但如果是,则它也会打印引号。

    TLDR:需要在GUI中传递带引号的字符串(因为字符串中有空格),但不能打印引号。

1 个答案:

答案 0 :(得分:1)

我已经测试过没有问题,只需使用下面的示例!

<强> TEST.CMD

@Echo Off

Set "var1=%~1"
Set "var2=%~2"
Set "var3=%~3"

If "%~3"=="" Exit /B
(Echo=%var1% %var2% %var3%)>"test.txt"

<强> test.frontend

<form caption="test GUI" program="test.cmd" icon="" showconsole="false" width="514" url="" description="" author="">
    <control type="tabset">
        <tabsheet caption="General" active="true">
            <control type="groupbox" caption=" Basic info " fontstyle="bold">
                <control type="edit" caption=" Variable 1 " commandline="" width="100"/>
                <control type="edit" caption=" Variable 2 " commandline="" width="100"/>
                <control type="edit" caption=" Variable 3 " commandline="" width="100"/>
            </control>
        </tabsheet>
    </control>
</form >

<强>截图

enter image description here

<强>的test.txt

one two three four