我有一个.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个参数)
现在一切正常,_mz3_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
值
答案 0 :(得分:2)
对不起。我想我不明白你的问题是什么(特别是当你说"现在一切正常,_mz3_creator.bat
文件执行正常并且它完成了它的工作"。
除此之外,我认为你应该注意几点:
批处理文件的参数用于执行具有不同未知值的文件,或者使用需要与原始调用文件的值分开的值。我想_mz3_creator.bat
很难提取这52个参数(可能是在带有shift
命令的复杂循环中?)。你必须意识到,当_mz3_creator.bat
启动时,它可以访问相同的52个变量和调用程序的值,所以所有这些工作都是完全没必要的(至少从我的角度来看)。
当需要单独的执行线程时,使用启动命令。我不知道是不是这样;否则start
命令是不必要的(call
命令就足够了。)
如果您想避免_mz3_creator.bat
修改在调用程序中必须保持相同的变量值,只需在开头插入setlocal
命令。
我希望它有所帮助。
安东尼奥