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界面如下所示:
(在三个字段中输入的值传递到底线
test.bat ...
在我看来
转移
忽略最后一个变量有空格且仅打印
three
,所以底线是
three four
必须在引号中,但如果手动添加引号,它们也会打印到文件中,我们不希望这样,请参见下面的第4段)
正如您所看到的,我们已经设置了值,var1是“一”,var2是“二”,var3包含一个空格,是“三四”。
-
单击后,在我的测试中执行输出。txt是
one two three
。但它缺少var3中的“四个”。
-
现在我试着把我的Var包在里面。蝙蝠状,例如。
set "var3=%1"
但得到同样的结果。
-
或
set var3="%1"
但它会打印带引号的“三”
one two "three"
仍然没有“四”。
-
我试着在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中传递带引号的字符串(因为字符串中有空格),但不能打印引号。