「拡張子からコンソール実行」の版間の差分
ナビゲーションに移動
検索に移動
YOS G-spec (トーク | 投稿記録) 細編集の要約なし |
YOS G-spec (トーク | 投稿記録) 編集の要約なし |
||
| 3行目: | 3行目: | ||
足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。<br> | 足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。<br> | ||
なお、いくつかのコマンドは動作確認出来ていないため、<br> | なお、いくつかのコマンドは動作確認出来ていないため、<br> | ||
その時は修正して使って頂くようお願いします。<br> | |||
< | <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 | ||
Case "js" | |||
ENGINE="node" | ENGINE="node" | ||
'ENGINE="jscript" | 'ENGINE="jscript" | ||
Case "py" | 'Python | ||
Case "py" | |||
ENGINE="python" | ENGINE="python" | ||
'ENGINE="pypy" | 'ENGINE="pypy" | ||
Case "php" | 'PHP | ||
Case "php" | |||
ENGINE="php" | ENGINE="php" | ||
'ENGINE=" | 'ENGINE="phpc" | ||
Case "lua" | 'Lua | ||
Case "lua" | |||
ENGINE="lua" | ENGINE="lua" | ||
'ENGINE="luajit" | 'ENGINE="luajit" | ||
Case "l","lisp","lsp" | 'LISP, CommonLisp | ||
Case "l","lisp","lsp" | |||
ENGINE="clisp" | ENGINE="clisp" | ||
'ENGINE="sbcl" | 'ENGINE="sbcl" | ||
Case "c","cpp" | 'C, C++ | ||
ENGINE="cl" | Case "c","cpp" | ||
'ENGINE=" | 'ENGINE="cl" | ||
'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" | Case "js" 'JavaScript | ||
Select Case ENGINE(file_format) | Select Case ENGINE(file_format) | ||
Case "node" | Case "node" | ||
'デバッグオプション | 'デバッグオプション | ||
'一行目に //debug | '一行目に //debug と加えることでデバッグモードでの実行を行う。 | ||
If load_option("//debug") Then | |||
If | CMD_OPTION="debug " | ||
Else | |||
CMD_OPTION="" | |||
End If | End If | ||
TITLE="Node.js " & Document.Name | TITLE="Node.js " & Document.Name | ||
EXEC_COMMAND="node " & | EXEC_COMMAND="node " & CMD_OPTION & Document.Name | ||
Case "jscript" | Case "jscript" | ||
| 101行目: | 114行目: | ||
EXEC_COMMAND="python " & Document.Name | EXEC_COMMAND="python " & Document.Name | ||
Case " | Case "phpc" | ||
TITLE="Phalanger " & Document.Name | TITLE="Phalanger " & Document.Name | ||
EXEC_COMMAND="phpc " & Document.Name | EXEC_COMMAND="phpc " & Document.Name | ||
| 121行目: | 134行目: | ||
'デフォルトでフォルダ内全てをコンパイル。 | 'デフォルトでフォルダ内全てをコンパイル。 | ||
'一行目に //only と加えることでそのファイルのみコンパイルを行う。 | '一行目に //only と加えることでそのファイルのみコンパイルを行う。 | ||
If load_option("//only") Then | |||
If | |||
PKG_FILES=Document.Name | PKG_FILES=Document.Name | ||
Else | |||
PKG_FILES="*.cs" | |||
End If | End If | ||
| 137行目: | 151行目: | ||
'デフォルトでフォルダ内全てをコンパイル。 | 'デフォルトでフォルダ内全てをコンパイル。 | ||
'一行目に 'only と加えることでそのファイルのみコンパイルを行う。 | '一行目に 'only と加えることでそのファイルのみコンパイルを行う。 | ||
If load_option("'only") Then | |||
If | |||
PKG_FILES=Document.Name | PKG_FILES=Document.Name | ||
Else | |||
PKG_FILES="*.vb" | |||
End If | End If | ||
| 158行目: | 173行目: | ||
'デフォルトではインタプリタとして実行する。 | 'デフォルトではインタプリタとして実行する。 | ||
'一行目に ;fas と加えることでfasファイルにコンパイルを行う。 | '一行目に ;fas と加えることでfasファイルにコンパイルを行う。 | ||
If load_option(";fas") Then | |||
If | CMD_OPTION="-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 " | Case "bcc32" | ||
TITLE="Borland C++ " & Document.Name | TITLE="Borland C++ " & Document.Name | ||
EXEC_COMMAND=" | 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 | ||
</ | 'コマンドラインオプションの読込 | ||
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
スポンサーリンク