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上的一些样本中获取了这个1} p>
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 >
(在三个字段中输入的值将传递到底线test.bat ...
,就像我看到的那样,shift
忽略最后一个变量有空格并仅打印three
,因此底线three four
必须在引号中,但如果您手动添加引号,它们也会打印到我们不想要的文件中,请参阅下面的第4段)
正如您所看到的,我们已经设置了值,var1是&#39;一个&#39;,var2是&#39;两个&#39;和var3包含一个空格,并且是三个四个&#39;
单击执行后,test.txt中的输出为one two three
。但它错过了四个&#39;来自var3。
现在我尝试在.bat中包装我的变量,例如set "var3=%1"
但得到的结果相同。
或set var3="%1"
但它会打印出三个&#39;引号one two "three"
仍然没有&#39;四&#39;
我尝试进入GUI&#39;三四&#39;使用"three four"
之类的引号,然后打印“&#39;四个”部分,但它错了,因为它打印了我们刚刚输入的引号,我们不想要one two "three four"
。
预期结果应为one two three four
,空格且无引号。
更新
进行了一些测试并发现我们可以在没有shift
的情况下实现相同的效果,但是像这样:
set var1=%1
set var2=%2
set var3=%3
同样的问题仍然存在,打印在cli或文件上,如果变量不在GUI上的引号中,它会跳过最后一个字符串,但如果是,则它也会打印引号。
TLDR:需要在GUI中传递带引号的字符串(因为字符串中有空格),但不能打印引号。
答案 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 >
<强>截图强>
<强>的test.txt 强>
one two three four