起動引数へのお願い

 投稿者:SECOND  投稿日:2012年 8月17日(金)12時31分51秒
  !EXECUTE program$ WITH( file1$, file2$, switch$ )

!起動引数を渡す場合、switch にまで、"/a" のように、ダブルクォーテーションが、
!両サイドに付いてくるため、スイッチとして認識されない場合が、多いです。
!以下の例で、3番目をエラーにしないで頂けると、助かります。

!------------------------------------------------------------------------
!EXECUTE "\masm\dump 80h.exe" WITH( "file 1", "file 2", "/a")
!
!0080 17 20 22 66 69 6C 65 20  31 22 20 22 66 69 6C 65   . "file 1" "file
!0090 20 32 22 20 22 2F 61 22  0D 00 00 00 00 00 00 00    2" "/a"........ ・・・NG

!------------------------------------------------------------------------
!EXECUTE "\masm\dump 80h.exe" WITH( "file 1", "file 2", 123)
!
!0080 17 20 22 66 69 6C 65 20  31 22 20 22 66 69 6C 65   . "file 1" "file
!0090 20 32 22 20 20 31 32 33  0D 00 00 00 00 00 00 00    2"  123........ ・・・OK

!------------------------------------------------------------------------
!EXECUTE "\masm\dump 80h.exe" WITH( "file 1", "file 2", /a)        ・・・エラー
!

!************************************************************************
!※以下で、対処しています。その代りスペースを含むファイル名、Literal が使用できず。
!------------------------------------------------------------------------
!EXECUTE "command.com" WITH( "/C \masm\dump80h.exe file1 file2 /a")
!
!0080 10 20 66 69 6C 65 31 20  66 69 6C 65 32 20 2F 61   . file1 file2 /a
!0090 22 0D 00 00 00 00 00 00  00 00 00 00 00 00 00 00   "............... ・・・末尾に残る

!------------------------------------------------------------------------
!EXECUTE "command.com" WITH( "/C \masm\dump80h.exe file1 file2 /a"& CHR$(0))
!
!0080 0F 20 66 69 6C 65 31 20  66 69 6C 65 32 20 2F 61   . file1 file2 /a
!0090 0D 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................ ・・・OK

END
 

Re: 起動引数へのお願い

 投稿者:白石和夫  投稿日:2012年 8月17日(金)18時22分59秒
  EXECUTE "\masm\dump 80h.exe" WITH( "file 1", "file 2", /a)
は文法的に無理です。
EXECUTE文に引数を引用符でくくらずに渡すオプションを追加することは可能かもしれません。
たとえば,
EXECUTE "\masm\dump 80h.exe" WITH( """file 1""", """file 2""", "/a"), NoQuotes
みたいに。
 

Re: 起動引数へのお願い

 投稿者:SECOND  投稿日:2012年 8月17日(金)20時38分13秒
  > No.1946[元記事へ]

ぜひ、お願いします。切実です。
 

Re: 起動引数へのお願い

 投稿者:白石和夫  投稿日:2012年 8月18日(土)09時32分48秒
  > No.1947[元記事へ]

空白文字を含まないときは,引用符でくくらないことにするのはどうでしょうか?
(旧版との互換性が気になりますが)
 

Re: 起動引数へのお願い

 投稿者:SECOND  投稿日:2012年 8月18日(土)10時41分8秒
  > No.1948[元記事へ]

EXECUTE "\masm\dump 80h.exe" WITH( "-i", "file 1", "-o", "file2", "/a")

>"\masm\dump 80h.exe" -i "file 1" -o file2 /a になるのですね。

EXECUTE "\masm\dump 80h.exe" WITH( """file 1""", """file 2""", "/a"), NoQuotes
の方が、自分としては好みですが、翻訳プログラムとの対話で、より簡単にできる方を優先して下さい。

<追記>
スイッチの中には、スペース無しにファイル名を後続要求するタイプが有ったように思い出され、
例 /O"file 2" この場合は、 EXECUTE program$ WITH( "/O""file 2""" ), NoQuotes
この形式でないと、出来ないケースが有りそうです。
やはり、最初のご提案を、お願いします。
 

Re: 起動引数へのお願い

 投稿者:白石和夫  投稿日:2012年 8月18日(土)18時14分33秒
  > No.1949[元記事へ]

NoQuotesオプションを追加するほうが旧版との互換性の問題が起こらないのでそちらを採用します。
(ver. 7.6.1になります)
 

Re: 起動引数へのお願い

 投稿者:SECOND  投稿日:2012年 8月18日(土)19時07分42秒
  > No.1950[元記事へ]

全てのケースに対応できて便利です、ありがとうございました。

ついでに、command.com /c を使う場合も、今まで、"/c ~ になっていたためと思いますが、

「指定された COMMAND 検索ディレクトリが違います.」
のメッセージが、出なくなって、きれいなシーケンスになりました。
 

戻る