Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 将参数传递给.bat脚本_Batch File - Fatal编程技术网

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
文件执行得很好,它完成了它的工作”

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

  • 批处理文件的参数用于执行具有不同未知值的文件,或具有需要与原始调用文件的值分开的值。我认为
    \u mz3\u creator.bat
    很难提取这52个参数(可能在带有
    shift
    命令的复杂循环中?)。您必须知道,当
    \u mz3\u creator.bat
    启动时,它可以访问调用程序的相同52个变量和值,因此所有这些工作都是完全不必要的(至少在我看来是这样)

  • Start命令在需要单独执行线程时使用。我不知道是否是这种情况;否则,
    Start
    命令是不必要的(一个
    call
    命令就足够了)

  • 如果要避免
    \u mz3\u creator.bat
    修改调用程序中必须保持不变的变量值,只需在开头插入
    setlocal
    命令

我希望有帮助


Antonio

好的,但是在原始文件中,它们用逗号分隔,并且是working@Joey-空格、制表符、逗号、分号、相等:CMD解析器不在乎。它们都用作参数分隔符。dbenham,好的。你比我更仔细地分析:)