run文とrunsync2文のパラメータ文字列につ
No.35319
tamu
さん 16/09/29 14:06
引数を表示するWSHのVBScript(ArgMsg.vbs)を、マクロ(bbb.mac)からrun文とrunsync
2文で実行すると結果が異なります。
具体的には、run文の場合は、「%B」の部分がマクロファイル名(bbb.mac)に置き換わ
った文字列が渡されているような結果となり、
runsync2文の場合は、マクロ中の $s の文字列をWindowsの「ファイル名を指定して
実行」で実行した場合と同じ結果となります。
ちなみに、"%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" は、文字
列 "インストール" を encodeURI でエンコードしたものです。
Windows 10 Pro Ver 1607 (64bit)
秀丸エディタ Ver 8.64 (64bit)
bbb.mac
--------------------------- ここから ---
$s = "wscript.exe ArgMsg.vbs %E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E
3%83%AB";
run $s;
runsync2 $s;
--------------------------- ここまで ---
ArgMsg.vbs
--------------------------- ここから ---
WScript.Echo WScript.Arguments.Item(0)
--------------------------- ここまで ---
[
△
]
RE:35319 run文とrunsync2文のパラメータ
No.35320
秀丸担当
さん 16/09/29 15:09
試してみたところ確かにそうなることが確認できました。
run文の %b や %f や %dなどは、「プログラム実行...」コマンド同様に、ファ
イル名などに置き換えられるようになっていて、そうなっていました。
%を書く場合は、%%にすると回避することができます。
一方、runsync2文は置き換えられることは無いです。
run文の場合は少々面倒ですが、例えば以下のようにして置き換えて%%にすると
できると思います。
#c = strlen( $s );
#i = 0;
while( #i < #c ) {
if(midstr($s,#i,1)=="%"){
$s=leftstr($s,#i)+"%"+rightstr($s,#c-#i);
#i = #i + 1;
#c = #c + 1;
}
#i = #i + 1;
}
[
△
]
RE:35320 run文とrunsync2文のパラメータ
No.35322
tamu
さん 16/09/30 06:17
お手数かけ申し訳ありません。
再度ヘルプを見直して内容が記載されていることを確認しました。
提示いただいたスクリプトの動作結果も期待通りです。
[
△
]