代码之家  ›  专栏  ›  技术社区  ›  user3108268

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

  •  2
  • user3108268  · 技术社区  · 6 年前

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

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

    @echo off &setlocal
    
    setlocal EnableDelayedExpansion
    
    set var1=%1
    shift
    set var2=%1
    shift
    set var3=%1
    
    echo %var1% %var2% %var3%> test.txt
    

    (据我所知,你必须通过考试 shift 让青蛙追上变量?我无法以任何其他方式使其工作,我从青蛙身上制作的一些样品中获取了这个)

    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 ... 在我看来 转移 忽略最后一个变量有空格且仅打印 three ,所以底线是 three four 必须在引号中,但如果手动添加引号,它们也会打印到文件中,我们不希望这样,请参见下面的第4段)

    正如您所看到的,我们已经设置了值,var1是“一”,var2是“二”,var3包含一个空格,是“三四”。

    1. 单击后,在我的测试中执行输出。txt是 one two three 。但它缺少var3中的“四个”。

    2. 现在我试着把我的Var包在里面。蝙蝠状,例如。 set "var3=%1" 但得到同样的结果。

    3. set var3="%1" 但它会打印带引号的“三” one two "three" 仍然没有“四”。

    4. 我试着在GUI“三四”中输入如下引号 "three four" 它打印“四”部分,但它是错误的,因为它打印的是我们刚才输入的引号,我们不希望这样 one two "three four"

    预期结果应为 one two three four 有空格,没有引号。

    使现代化

    做了更多的测试,发现我们可以在没有 转移 ,但像这样:

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

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Compo    6 年前

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

    测验cmd命令

    @Echo Off
    
    Set "var1=%~1"
    Set "var2=%~2"
    Set "var3=%~3"
    
    If "%~3"=="" Exit /B
    (Echo=%var1% %var2% %var3%)>"test.txt"
    

    测验前端

    <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

    测验txt文件

    one two three four