1

我有一个.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价值

4

1 回答 1

2

打扰一下。我想我不明白你的问题是什么(特别是当你说“现在一切正常,该_mz3_creator.bat文件执行良好并且它完成了它的工作”。

除此之外,我认为您应该注意以下几点:

  • 批处理文件的参数用于执行具有不同未知值的文件,或者具有需要与原始调用文件的值分开的值。我想_mz3_creator.bat提取这 52 个参数是一项艰巨的工作(也许在一个带有shift命令的复杂循环中?)。您必须知道,当_mz3_creator.bat启动时,它可以访问调用程序的相同的 52 个变量和值,因此所有这些工作都是完全没有必要的(至少,从我的角度来看)。

  • 当需要单独的执行线程时使用启动命令。我不知道是不是这样;否则该start命令是不必要的(一个call命令就足够了)。

  • 如果你想避免_mz3_creator.bat在调用程序中修改变量值必须保持不变,只需setlocal在开头插入一个命令。

我希望它有所帮助。

安东尼奥

于 2012-06-24T20:08:01.113 回答