概要
VBScriptの対話コンソール
自作しない派
VBScript from command line ? Yes with WSH Shell Console !を使う
かなりよい。
↓のようにmsgbox("hello")
とやると、「終了後にhelloがポップアップし続ける」という謎の動作をする(タスクマネージャで止めれば止まる)。
自作派
VBScript interactive shell(from wayback machine)とvbscript - How can I start an interactive console for VBS - Stack Overflowを見て作る。
こちらはmsgbox("hello")
をしても終了後に連続ポップアップしない(ただし、色付けとかいろいろ低機能。)
自作派用コード
以下のvbsとbatを「同じフォルダ内に同じファイル名で保存する」(補足)。
do while true
wscript.stdout.write(">>> ")
ln = wscript.stdin.readline
if lcase(trim(ln)) = "exit" then exit do
on error resume next
err.clear
execute ln
if err.number <> 0 then wscript.echo(err.description)
on error goto 0
loop
@cscript.exe //NoLogo %~dpn0.vbs
補足
バッチファイルのパスをC:\vbs_interactive_shell.bat
とする。
@cscript.exe //NoLogo %~dpn0.vbs
%~dpn0
は、「実行されているファイルが置かれているカレントディレクトリとファイル名(拡張子を含まない)」になり、C:\vbs_interactive_shell
と.vbs
が連結されることになる。
つまり、
@cscript.exe //NoLogo C:\vbs_interactive_shell.vbs
と展開されるので、vbsとbatは同じファイル名にする。
参考
%~dp0 とは - [コマンドプロンプト・バッチ_Windows]
つまり%~dp0 は、『実行されているファイルが置かれているカレントディレクトリ』を表します。
%~dp0 とは、%0にオプション構文の『 ~ 』と『 d 』と『 p 』が付いたものです。
それぞれを説明すると、
%0
実行されているファイルのパスです。
~
"(ダブルクオート)を除く
d
ドライブ文字だけに展開する
p
ファイル名を除くパスの部分に展開する
バッチファイルのパラメータのメモ - Segu Entirely Ginbis UMAUMA
~n: ファイル名
@echo off
echo %0
echo %~d0
echo %~p0
echo %~n0
echo %~x0
echo %~dp0
echo %~pn0
echo %~dpn0
echo %~dpnx0
↓
test.bat
C:
\Users\username\
test
.bat
C:\Users\username\
\Users\username\test
C:\Users\username\test
C:\Users\username\test.bat