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)。起動時には、呼び出し元プログラムと同じ 52 個の変数と値にアクセスできるため、このすべての作業はまったく不要であることに注意する必要があります_mz3_creator.bat(少なくとも、私の観点からは)。

  • 別の実行スレッドが必要な場合は、開始コマンドを使用します。これが事実かどうかはわかりません。それ以外の場合、startコマンドは不要です (callコマンドで十分です)。

  • _mz3_creator.bat呼び出しプログラムで同じままにしておく必要がある変数値を変更することを避けたい場合はsetlocal、最初にコマンドを挿入するだけです。

お役に立てば幸いです。

アントニオ

于 2012-06-24T20:08:01.113 に答える