Batch file 将参数传递给.bat脚本
我有一个Batch file 将参数传递给.bat脚本,batch-file,Batch File,我有一个.bat文件,其中包含一些变量。我注意到一个奇怪的问题 在该文件的底部有一行: START _mz3_creator.bat %book_name%,%pg_count%,%pg_width%,%pg_height%,%pg_format%,%scale%,%jpg_q_l%,%jpg_q_h%,%res_px_l%,%res_px_h%,%book_type%,%zoomminscale%,%zoommaxscale%,%zoomsnap%,%zoomsteps%,%zoominit%
.bat
文件,其中包含一些变量。我注意到一个奇怪的问题
在该文件的底部有一行:
START _mz3_creator.bat %book_name%,%pg_count%,%pg_width%,%pg_height%,%pg_format%,%scale%,%jpg_q_l%,%jpg_q_h%,%res_px_l%,%res_px_h%,%book_type%,%zoomminscale%,%zoommaxscale%,%zoomsnap%,%zoomsteps%,%zoominit%,%maxloaded%,%pagethickness%,%maxthickness%,%thumbscale%,%logo_pos%,%settings%,%plugin_list%,%qualitycontrol%,%centercovers%,%cornerhint%,%pageoffset%,%dragrange%,%searchmethod%,%shadows%,%searchclear%,%startpage%,%version_name%,%make_pg%,%parameter_list%,%thumbloadtext%,%custom_webaddress%,%bookmark_title%,%make_what%,%logo_width%,%logo_height%,%page_type%,%side_bar%,%lang_list%,%hi_res_type%,%language%,%gallery_active%, %bookmark_type%,%thumbloadtextsize%,%elementsfadein%,%thumbs_fetch%, %bgcolor%
(我为该文件传递了52个参数)
现在一切正常,这个\u mz3\u creator.bat
文件执行得很好,完成了它的工作
但是,我想知道哪些值包含这些变量,所以我使用
ECHO START _mz3_creator.bat %book_name%, .......... etc
问题是——在我使用ECHO
命令后,我复制了输出:
START _mz3_creator.bat "quick",14,816,1056,US,ž,40,90,36,96,pdf,0.25,4.0,"0.25,0.5, 0.75, 1.0, 1.5, 2.0, 3.0, 4.0",2,0,32,0.2,40,0.25,"pw-w,ph-h-60","true, false, false, false, false","options,zoom",true,true,false,0,30,client,0.3,false,1,"pdf",y,"ž","please wait","http://stackoverflow.com",n,m,165,45,b,n,"ž",jpg,en,0,"u",12,false,0,"ž"
并将其粘贴到一个空白的.bat
文件中,执行后我看到一些错误
为什么?
我想在复制变量后,它们的格式可能有问题。有什么想法吗
编辑
在我的原始.bat文件中,我看到了这一行
SET scale=0
...
SET scale="%scale%"
SET scale=%scale:"=%
IF §%scale%==§ SET scale=§
IF %scale%==0 SET scale=§
然后在输出中,我看到的是
ž
,而不是§
。我认为它被视为NULL
value对不起。我想我不明白你的问题是什么(特别是当你说“现在一切都正常了,那\u mz3\u creator.bat
文件执行得很好,它完成了它的工作”
除此之外,我认为您应该注意以下几点:
- 批处理文件的参数用于执行具有不同未知值的文件,或具有需要与原始调用文件的值分开的值。我认为
很难提取这52个参数(可能在带有\u mz3\u creator.bat
命令的复杂循环中?)。您必须知道,当shift
启动时,它可以访问调用程序的相同52个变量和值,因此所有这些工作都是完全不必要的(至少在我看来是这样)\u mz3\u creator.bat
- Start命令在需要单独执行线程时使用。我不知道是否是这种情况;否则,
命令是不必要的(一个Start
命令就足够了)call
- 如果要避免
修改调用程序中必须保持不变的变量值,只需在开头插入\u mz3\u creator.bat
命令setlocal
Antonio好的,但是在原始文件中,它们用逗号分隔,并且是working@Joey-空格、制表符、逗号、分号、相等:CMD解析器不在乎。它们都用作参数分隔符。dbenham,好的。你比我更仔细地分析:)