「拡張子からコンソール実行」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
3行目: 3行目:
足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。<br>
足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。<br>
なお、いくつかのコマンドは動作確認出来ていないため、<br>
なお、いくつかのコマンドは動作確認出来ていないため、<br>
その時は修正して使っていただくようお願いします。<br>
その時は修正して使って頂くようお願いします。<br>




<source lang="VBScript">
<syntaxhighlight lang=VBScript line>
' exec_cmd.vbs
' exec_cmd.vbs


19行目: 19行目:
Function ENGINE(file_format)
Function ENGINE(file_format)
Select Case LCase(file_format)
Select Case LCase(file_format)
Case "js" 'JavaScript
'JavaScript
Case "js"
ENGINE="node"
ENGINE="node"
'ENGINE="jscript"
'ENGINE="jscript"
Case "py" 'Python
'Python
Case "py"
ENGINE="python"
ENGINE="python"
'ENGINE="pypy"
'ENGINE="pypy"
Case "php" 'PHP
'PHP
Case "php"
ENGINE="php"
ENGINE="php"
'ENGINE="phalanger"
'ENGINE="phpc"
Case "lua" 'Lua
'Lua
Case "lua"
ENGINE="lua"
ENGINE="lua"
'ENGINE="luajit"
'ENGINE="luajit"
Case "l","lisp","lsp" 'LISP, CommonLisp
'LISP, CommonLisp
Case "l","lisp","lsp"
ENGINE="clisp"
ENGINE="clisp"
'ENGINE="sbcl"
'ENGINE="sbcl"
Case "c","cpp" 'C, C++
'C, C++
ENGINE="cl"
Case "c","cpp"
'ENGINE="bcc"
'ENGINE="cl"
'ENGINE="g++"
'ENGINE="bcc32"
ENGINE="g++"
End Select
End Select
End Function
End Function
'パックファイル
 
'パッケージファイル
Dim PKG_FILES
Dim PKG_FILES
'コマンドオプション
Dim CMD_OPTION


'ファイル名
Dim doc_names:doc_names=Split(Document.Name,".")
Dim doc_names:doc_names=Split(Document.Name,".")
'拡張子
Dim file_format:file_format=doc_names(UBound(doc_names))
Dim file_format:file_format=doc_names(UBound(doc_names))
doc_names(UBound(doc_names))=""
doc_names(UBound(doc_names))=""
'拡張子を除いたファイル名
Dim DOC_NAME:DOC_NAME=Mid(Join(doc_names,"."),1,UBound(doc_names))
Dim DOC_NAME:DOC_NAME=Mid(Join(doc_names,"."),1,UBound(doc_names))


Select Case LCase(file_format)
Select Case LCase(file_format)
Case "js" 'JavaScript
Case "js" 'JavaScript
Select Case ENGINE(file_format)
Select Case ENGINE(file_format)
Case "node"
Case "node"
'デバッグオプション
'デバッグオプション
'一行目に //debug と加えることでデバッグモードでの実効を行う。
'一行目に //debug と加えることでデバッグモードでの実行を行う。
Dim DEBUG:DEBUG=""
If load_option("//debug") Then
If 0<Instr(LCase(Document.GetLine(1)),"//debug") Then
CMD_OPTION="debug "
DEBUG="debug "
Else
CMD_OPTION=""
End If
End If
TITLE="Node.js " & Document.Name
TITLE="Node.js " & Document.Name
EXEC_COMMAND="node " & DEBUG & Document.Name
EXEC_COMMAND="node " & CMD_OPTION & Document.Name


Case "jscript"
Case "jscript"
101行目: 114行目:
EXEC_COMMAND="python " & Document.Name
EXEC_COMMAND="python " & Document.Name


Case "phalanger"
Case "phpc"
TITLE="Phalanger " & Document.Name
TITLE="Phalanger " & Document.Name
EXEC_COMMAND="phpc " & Document.Name
EXEC_COMMAND="phpc " & Document.Name
121行目: 134行目:
'デフォルトでフォルダ内全てをコンパイル。
'デフォルトでフォルダ内全てをコンパイル。
'一行目に //only と加えることでそのファイルのみコンパイルを行う。
'一行目に //only と加えることでそのファイルのみコンパイルを行う。
PKG_FILES="*.cs"
If load_option("//only") Then
If 0<Instr(LCase(Document.GetLine(1)),"//only") Then
PKG_FILES=Document.Name
PKG_FILES=Document.Name
Else
PKG_FILES="*.cs"
End If
End If
137行目: 151行目:
'デフォルトでフォルダ内全てをコンパイル。
'デフォルトでフォルダ内全てをコンパイル。
'一行目に 'only と加えることでそのファイルのみコンパイルを行う。
'一行目に 'only と加えることでそのファイルのみコンパイルを行う。
PKG_FILES="*.vb"
If load_option("'only") Then
If 0<Instr(LCase(Document.GetLine(1)),"'only") Then
PKG_FILES=Document.Name
PKG_FILES=Document.Name
Else
PKG_FILES="*.vb"
End If
End If
158行目: 173行目:
'デフォルトではインタプリタとして実行する。
'デフォルトではインタプリタとして実行する。
'一行目に ;fas と加えることでfasファイルにコンパイルを行う。
'一行目に ;fas と加えることでfasファイルにコンパイルを行う。
Dim COMPILE:COMPILE=""
If load_option(";fas") Then
If 0<Instr(LCase(Document.GetLine(1)),";fas") Then
CMD_OPTION="-c "
COMPILE="-c "
Else
CMD_OPTION=""
End If
End If


176行目: 192行目:


Case "c","cpp" 'C, C++
Case "c","cpp" 'C, C++
'コンパイルのみ
Select Case ENGINE(file_format)
Select Case ENGINE(file_format)
Case "cl"
Case "cl"
TITLE="Visual C++ " & Document.Name
TITLE="Visual C++ " & Document.Name
EXEC_COMMAND="cl " & Document.Name & " & " & DOC_NAME & ".exe"
EXEC_COMMAND="cl " & Document.Name & " & " & DOC_NAME & ".exe"
Case "bcc"
Case "bcc32"
TITLE="Borland C++ " & Document.Name
TITLE="Borland C++ " & Document.Name
EXEC_COMMAND="bcc " & Document.Name & " & " & DOC_NAME & ".exe"
EXEC_COMMAND="bcc32 " & Document.Name & " & " & DOC_NAME & ".exe"
Case "g++"
Case "g++"
TITLE="GNU GCC C++ " & Document.Name
TITLE="GNU GCC C++ " & Document.Name
202行目: 217行目:


Case "cas" 'CASL II
Case "cas" 'CASL II
TITLE="CASL II " & Document.Name
TITLE="JAVA CASL II " & Document.Name
EXEC_COMMAND="java -jar casl2.jar  " & Document.Name
EXEC_COMMAND="java -jar casl2.jar  " & Document.Name


226行目: 241行目:
Set cmd=Nothing
Set cmd=Nothing


</source>
'コマンドラインオプションの読込
Function load_option(opt)
load_option=Instr(LCase(Document.GetLine(1)),opt)
End Function
 
</syntaxhighlight>

2016年4月27日 (水) 00:04時点における版

コンソール実行をVBSに移植して、1ファイルのみで多言語対応出来るように機能強化したものです。
拡張子からコマンドを判別するため、以前のように呼び出す時に設定する必要はありません。
足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。
なお、いくつかのコマンドは動作確認出来ていないため、
その時は修正して使って頂くようお願いします。


' exec_cmd.vbs

'ファイルの保存
Document.Save()

'タイトル名  Document.Name:現在のファイル名
Dim TITLE
'実行コマンド
Dim EXEC_COMMAND
'使用エンジン
Function ENGINE(file_format)
	Select Case LCase(file_format)
		'JavaScript
		Case "js"
			ENGINE="node"
			'ENGINE="jscript"
		'Python
		Case "py"
			ENGINE="python"
			'ENGINE="pypy"
		'PHP
		Case "php"
			ENGINE="php"
			'ENGINE="phpc"
		'Lua
		Case "lua"
			ENGINE="lua"
			'ENGINE="luajit"
		'LISP, CommonLisp
		Case "l","lisp","lsp"
			ENGINE="clisp"
			'ENGINE="sbcl"
		'C, C++
		Case "c","cpp"
			'ENGINE="cl"
			'ENGINE="bcc32"
			ENGINE="g++"
	End Select
End Function

'パッケージファイル
Dim PKG_FILES
'コマンドオプション
Dim CMD_OPTION

Dim doc_names:doc_names=Split(Document.Name,".")

'拡張子
Dim file_format:file_format=doc_names(UBound(doc_names))
doc_names(UBound(doc_names))=""

'拡張子を除いたファイル名
Dim DOC_NAME:DOC_NAME=Mid(Join(doc_names,"."),1,UBound(doc_names))

Select Case LCase(file_format)
	Case "js"		'JavaScript
		Select Case ENGINE(file_format)
			Case "node"
				'デバッグオプション
				'一行目に //debug と加えることでデバッグモードでの実行を行う。
				If load_option("//debug") Then
					CMD_OPTION="debug "
				Else
					CMD_OPTION=""
				End If
				
				TITLE="Node.js " & Document.Name
				EXEC_COMMAND="node " & CMD_OPTION & Document.Name

			Case "jscript"
				TITLE="WSH JScript " & Document.Name
				EXEC_COMMAND="cscript //nologo //E:JScript " & Document.Name
		End Select

	Case "vbs"		'VBScript
		TITLE="WSH VBScript " & Document.Name
		EXEC_COMMAND="cscript  //nologo //E:VBScript " & Document.Name

	Case "wsf"		'WSF
		TITLE="WSF " & Document.Name
		EXEC_COMMAND="cscript  //nologo " & Document.Name

	Case "rb"		'Ruby
		TITLE="Ruby " & Document.Name
		EXEC_COMMAND="ruby " & Document.Name

	Case "pl"		'Perl
		TITLE="Perl " & Document.Name
		EXEC_COMMAND="perl " & Document.Name

	Case "py"		'Python
		Select Case ENGINE(file_format)
			Case "python"
				TITLE="Python " & Document.Name
				EXEC_COMMAND="python " & Document.Name

			Case "pypy"
				TITLE="PyPy " & Document.Name
				EXEC_COMMAND="pypy " & Document.Name
		End Select
		
	Case "php"		'PHP
		Select Case ENGINE(file_format)
			Case "php"
				TITLE="PHP " & Document.Name
				EXEC_COMMAND="python " & Document.Name

			Case "phpc"
				TITLE="Phalanger " & Document.Name
				EXEC_COMMAND="phpc " & Document.Name
		End Select

	Case "lua"		'Lua
		Select Case ENGINE(file_format)
			Case "lua"
				TITLE="Lua " & Document.Name
				EXEC_COMMAND="lua " & Document.Name

			Case "luajit"
				TITLE="LuaJIT " & Document.Name
				EXEC_COMMAND="luajit " & Document.Name
		End Select

	Case "cs"		'C#
		'コンパイルファイル選択
		'デフォルトでフォルダ内全てをコンパイル。
		'一行目に //only と加えることでそのファイルのみコンパイルを行う。
		If load_option("//only") Then
			PKG_FILES=Document.Name
		Else
			PKG_FILES="*.cs"
		End If
		
		TITLE="C# "+ Document.Name
		EXEC_COMMAND= _
			"del " & DOC_NAME & ".exe & " & _
			"%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\csc /nologo /out:" & _
				DOC_NAME & ".exe " & PKG_FILES & " /optimize+ & " & _
			DOC_NAME & ".exe"

	Case "vb"		'VB.NET
		'コンパイルファイル選択
		'デフォルトでフォルダ内全てをコンパイル。
		'一行目に 'only と加えることでそのファイルのみコンパイルを行う。
		If load_option("'only") Then
			PKG_FILES=Document.Name
		Else
			PKG_FILES="*.vb"
		End If
		
		TITLE="VB.NET "+ Document.Name
		EXEC_COMMAND= _
			"%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\vbc /nologo /out:" & _
				DOC_NAME & ".exe " & PKG_FILES & " /optimize+ & " & _
			DOC_NAME & ".exe"

	Case "ps1"		'PowerShell
		TITLE="PowerShell " & Document.Name
		EXEC_COMMAND="powershell " & Document.Name

	Case "l","lisp","lsp"	'LISP, CommonLisp
		Select Case ENGINE(file_format)
			Case "clisp"
				'コンパイルオプション
				'デフォルトではインタプリタとして実行する。
				'一行目に ;fas と加えることでfasファイルにコンパイルを行う。
				If load_option(";fas") Then
					CMD_OPTION="-c "
				Else
					CMD_OPTION=""
				End If

				TITLE="CLISP " & Document.Name
				EXEC_COMMAND="clisp " & Document.Name

			Case "sbcl"
				TITLE="SBCL " & Document.Name
				EXEC_COMMAND="sbcl --script " & Document.Name
		End Select

	Case "scm"		'Scheme
		TITLE="Gauche" & Document.Name
		EXEC_COMMAND="gosh " & Document.Name

	Case "c","cpp"	'C, C++
		Select Case ENGINE(file_format)
			Case "cl"
				TITLE="Visual C++ " & Document.Name
				EXEC_COMMAND="cl " & Document.Name & " & " & DOC_NAME & ".exe"
			Case "bcc32"
				TITLE="Borland C++ " & Document.Name
				EXEC_COMMAND="bcc32 " & Document.Name & " & " & DOC_NAME & ".exe"
			Case "g++"
				TITLE="GNU GCC C++ " & Document.Name
				EXEC_COMMAND="g++ " & Document.Name & " & " & DOC_NAME & ".exe"
		End Select

	Case "d"		'D言語
		TITLE="D言語 " & Document.Name
		EXEC_COMMAND="dmd " & Document.Name & " & " & DOC_NAME & ".exe"

	Case "pas","pp"	'PASCAL
		TITLE="FreePascal " & Document.Name
		EXEC_COMMAND="fpc " & Document.Name & " & " & DOC_NAME & ".exe"

	Case "f90"		'Fortran
		TITLE="GFortran " & Document.Name
		EXEC_COMMAND="gfortran " & Document.Name & " & " & DOC_NAME & ".exe"

	Case "cas"		'CASL II
		TITLE="JAVA CASL II " & Document.Name
		EXEC_COMMAND="java -jar casl2.jar  " & Document.Name

	Case "bat"		'BAT
		TITLE="BAT " & Document.Name
		EXEC_COMMAND=Document.Name

	Case Else
		TITLE=Document.Name
		EXEC_COMMAND= Document.Name
End Select

'コマンドライン起動
Dim cmd:Set cmd = CreateObject("WScript.Shell")
cmd.Run _
	"cmd /C """ & _
	"title " & TITLE & " & " & _
	"cd/d " & Document.Path & " & " & _
	EXEC_COMMAND & " & " & _
	"pause > nul &" & _
	"exit""",1

Set cmd=Nothing

'コマンドラインオプションの読込
Function load_option(opt)
	load_option=Instr(LCase(Document.GetLine(1)),opt)
End Function
スポンサーリンク