「
拡張子からコンソール実行
」を編集中
2016年4月30日 (土) 11:51時点における
YOS G-spec
(
トーク
|
投稿記録
)
による版
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== [[File:拡張子でコンソール実行.png]] 概要 == [[コンソール実行]]をVBSに移植して、1ファイルのみで多言語対応出来るように機能強化したものです。<br> 拡張子からコマンドを判別するため、以前のように呼び出す時に設定する必要はありません。<br> 足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。<br> なお、いくつかのコマンドは動作確認出来ていないため、<br> その時は修正して使って頂くようお願いします。<br> == [[File:拡張子でコンソール実行.png]] 対応済み言語処理系一覧 == JavaScript(Node.js、JScript、JScript.NET、Rhino)、TypeScript、CoffeeScript、VBScript、<br> Ruby(JRuby、IronRuby)、Perl、Python(PyPy)、Lua(JIT)、C#、VB.NET、F#、PowerShell、<br> C,C++(VC++、BCC32、G++)、D、Go、Ada、Java、Scala、Groovy、Pascal、Fortran、<br> CommonLisp(CLISP、SBCL、MKCL)、Scheme(Gauche)、Clojure(JVM、CLR)、CASL II、BAT<br> <br> ※ただし、基本的にはパスが通っていることが前提。<br> == [[File:拡張子でコンソール実行.png]] ZIP == [[Media:拡張子でコンソール実行inマクロ.zip|ダウンロード【2016/04/30版】]]<br> [[:File:拡張子でコンソール実行inマクロ.zip|旧版]]<br> 変換済みicoファイル込<br> == [[File:拡張子でコンソール実行.png]] アイコン == [[File:拡張子でコンソール実行.png]] [[File:拡張子でコンソール実行2.png]] == [[File:拡張子でコンソール実行.png]] ソース == exec_cmd.vbs <syntaxhighlight lang=VBScript line> #icon="exec_cmd.ico" #title="コンソール実行" ' exec_cmd.vbs 'ファイルの保存 Document.Save() '保存してなければ終了。 If Document.Name="" Then MsgBox "ファイルが保存されてません。" Quit End If 'タイトル名 Document.Name:現在のファイル名 Dim TITLE '実行コマンド Dim EXEC_COMMAND '使用エンジン Function ENGINE(file_format) Select Case LCase(file_format) 'JavaScript Case "js" 'ENGINE="node" ENGINE="jscript" 'ENGINE="jsc" 'ENGINE="rhino" 'Ruby Case "rb" ENGINE="ruby" 'ENGINE="jruby" 'ENGINE="ir" 'Python Case "py" ENGINE="python" 'ENGINE="pypy" 'PHP Case "php" ENGINE="php" 'ENGINE="phpc" 'Lua Case "lua" ENGINE="lua" 'ENGINE="luajit" 'C, C++ Case "c","cpp" 'ENGINE="cl" 'ENGINE="bcc32" ENGINE="g++" 'LISP, CommonLisp Case "l","lisp","lsp" ENGINE="clisp" 'ENGINE="sbcl" 'ENGINE="mkcl" 'Clojure Case "clj" ENGINE="clojure" 'ENGINE="clojure-clr" End Select End Function 'エンジンのパス パスが通しにくかったり通らないものを記述 Function ENGINE_PATH(file_format) Select Case LCase(file_format) 'TypeScript Case "ts" ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\TypeScript\1.0" 'ENGINE_PATH="%APPDATA%\npm" 'CoffeeScript Case "coffee" ENGINE_PATH="%APPDATA%\npm" 'C# Case "cs" ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319" 'ENGINE_PATH="%ProgramFiles%\MSBuild\12.0\Bin" 'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin" 'VB.NET Case "vb" ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319" 'ENGINE_PATH="%ProgramFiles%\MSBuild\12.0\Bin" 'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin" 'F# Case "fs" ENGINE_PATH"%ProgramFiles%\Microsoft SDKs\F#\3.1\Framework\v4.0" 'Rhino Case "rhino" ENGINE_PATH="%HOMEDRIVE%\rhino" 'Clojure(JVM) Case "clojure" 'clojure-x.x.xのバージョン表記"-x.x.x"を消すと動かなくなる。 ENGINE_PATH="%HOMEDRIVE%\clojure-1.8.0" 'CASL II Case "cas" ENGINE_PATH="%HOMEDRIVE%\javaCASL2" End Select End Function 'パッケージファイル Dim PKG_FILES 'コマンドオプション Dim CMD_OPTION 'ビルドメッセージ Dim BUILDED BUILDED=" & Echo Complited." 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=Join(doc_names,".") DOC_NAME=Mid(DOC_NAME,1,Len(DOC_NAME)-1) '実行時exeにコンパイルする形式の場合は一行目に ' delexeを含めることで事前にexeを削除することができます。 'タイトル、実行コマンド Select Case LCase(file_format) Case "js" 'JavaScript Select Case ENGINE(file_format) Case "node" 'Node.js 'デバッグオプション '一行目に //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" 'JScript TITLE="JScript " & Document.Name EXEC_COMMAND="cscript //nologo //E:JScript " & Document.Name Case "jsc" 'JScript.NET PKG_FILES=Document.Name TITLE="JScript.NET "+ Document.Name EXEC_COMMAND= _ """%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\jsc"" /nologo /out:" & _ DOC_NAME & ".exe " & PKG_FILES & " & " & _ DOC_NAME & ".exe" Case "rhino" 'Rhino TITLE="Rhino " & Document.Name EXEC_COMMAND="java -jar " & ENGINE_PATH(ENGINE(file_format)) & "\js.jar " & Document.Name End Select Case "ts" 'TypeScript TITLE="TypeScript to " & ENGINE("js") & " " & Document.Name EXEC_COMMAND="""" & ENGINE_PATH(file_format) & "\tsc"" " & Document.Name EXEC_COMMAND=EXEC_COMMAND & " & " 'エンジン選択 Select Case ENGINE("js") Case "node" 'Node.js EXEC_COMMAND=EXEC_COMMAND & _ "node " & " " & DOC_NAME & ".js" Case "jscript" 'JScript EXEC_COMMAND=EXEC_COMMAND & _ "cscript //nologo //E:JScript " & DOC_NAME & ".js" Case "jsc" 'JScript.NET '非対応? End Select Case "coffee" 'CoffeeScript 'コンパイルオプション '一行目に #js と加えることでコンパイルを行う。 If load_option("#js") Then CMD_OPTION="--compile" Else CMD_OPTION="" BUILDED="" End If TITLE="CoffeeScript " & Document.Name EXEC_COMMAND="""" & ENGINE_PATH(file_format) & "\coffee"" " & CMD_OPTION & " " & Document.Name & BUILDED Case "vbs" 'VBScript TITLE="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 Select Case ENGINE(file_format) Case "ruby" 'Ruby TITLE="Ruby " & Document.Name EXEC_COMMAND="ruby " & Document.Name Case "jruby" 'JRuby TITLE="JRuby " & Document.Name EXEC_COMMAND="jruby " & Document.Name Case "ir" 'IronRuby TITLE="IronRuby " & Document.Name EXEC_COMMAND="ir " & Document.Name End Select Case "pl" 'Perl TITLE="Perl " & Document.Name EXEC_COMMAND="perl " & Document.Name Case "py" 'Python Select Case ENGINE(file_format) Case "python" 'Python TITLE="Python " & Document.Name EXEC_COMMAND="python " & Document.Name Case "pypy" 'PyPy TITLE="PyPy " & Document.Name EXEC_COMMAND="pypy " & Document.Name End Select Case "php" 'PHP Select Case ENGINE(file_format) Case "php" 'PHP TITLE="PHP " & Document.Name EXEC_COMMAND="python " & Document.Name Case "phpc" 'Phalanger TITLE="Phalanger " & Document.Name EXEC_COMMAND="phpc " & Document.Name End Select Case "lua" 'Lua Select Case ENGINE(file_format) Case "lua" 'Lua TITLE="Lua " & Document.Name EXEC_COMMAND="lua " & Document.Name Case "luajit" '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= _ """" & ENGINE_PATH(file_format) & "\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= _ """" & ENGINE_PATH(file_format) & "\vbc""" & _ " /nologo /out:" & DOC_NAME & ".exe " & PKG_FILES & " /optimize+ & " & _ DOC_NAME & ".exe" Case "fs" 'F# PKG_FILES=Document.Name TITLE="F# "+ Document.Name EXEC_COMMAND= _ """" & ENGINE_PATH(file_format) & "\fsc""" & _ " --nologo --out:" & DOC_NAME & ".exe " & PKG_FILES & " --optimize+ & " & _ DOC_NAME & ".exe" Case "ps1" 'PowerShell TITLE="PowerShell " & Document.Name EXEC_COMMAND="powershell " & Document.Name Case "c","cpp" 'C, C++ Select Case ENGINE(file_format) Case "cl" 'Visual C++ TITLE="Visual C++ " & Document.Name EXEC_COMMAND="cl " & Document.Name & " & " & DOC_NAME & ".exe" Case "bcc32" 'Borland C++ TITLE="Borland C++ " & Document.Name EXEC_COMMAND="bcc32 " & Document.Name & " & " & DOC_NAME & ".exe" Case "g++" 'GCC C++ TITLE="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 "go" 'Go 'コンパイルオプション '一行目に//buildでビルドを行う。 If load_option("//build") Then CMD_OPTION="build" Else CMD_OPTION="run" End If Case "adb" 'Ada TITLE="GNAT Ada " & Document.Name EXEC_COMMAND="gnatmake " & Document.Name & " & " & DOC_NAME & ".exe" Case "java" 'Java 'jar化は手順が面倒そうなので保留 TITLE="Java " & Document.Name EXEC_COMMAND="javac " & Document.Name & " & " & _ "java " & DOC_NAME Case "scala" 'Scala TITLE="Scala " & Document.Name If load_option("//class") Then EXEC_COMMAND="scalac " & Document.Name Else EXEC_COMMAND="scala " & Document.Name End If Case "groovy" 'Groovy TITLE="Groovy " & Document.Name If load_option("//class") Then EXEC_COMMAND="groovyc " & Document.Name Else EXEC_COMMAND="groovy " & Document.Name End If Case "l","lisp","lsp" 'LISP, CommonLisp Select Case ENGINE(file_format) Case "clisp" 'CLISP 'コンパイルオプション 'デフォルトではインタプリタとして実行する。 '一行目に ;fas と加えることでfasファイルにコンパイルを行う。 If load_option(";fas") Then CMD_OPTION="-c" Else CMD_OPTION="" End If TITLE="CLISP " & Document.Name EXEC_COMMAND="clisp " & CMD_OPTION & " " & Document.Name Case "sbcl" 'SteelBankCommonLisp 'コンパイルオプション 'デフォルトではインタプリタとして実行する。 '一行目に ;fasl と加えることでfaslファイルにコンパイルを行う。 '(Macrosフォルダにexec_sbcl_comp.lisp 必須) If load_option(";fasl") Then Dim me_paths:me_paths=Split(Editor.FullName,"\") me_paths(UBound(me_paths))="" 'Macrosフォルダのパス取得 Dim me_path:me_path=Join(me_paths,"\") & "Macros\exec_cmd\" CMD_OPTION=me_path & "exec_sbcl_comp.lisp" Else CMD_OPTION="" End If TITLE="SBCL " & Document.Name EXEC_COMMAND="sbcl --script " & CMD_OPTION & " " & Document.Name Case "mkcl" 'ManKaiCommonLisp 'コンパイルオプション 'デフォルトではインタプリタとして実行する。 '一行目に ;fas でfasファイル生成。 ' ;exe でexeファイル生成 If load_option(";fas") Then CMD_OPTION="-compile " & Document.Name ElseIf load_option(";exe") Then TITLE="MKCL " & Document.Name CMD_OPTION="-not-fasl-p -compile " & Document.Name & " & " & _ "timeout /t 1 > nul & " &_ "mkcl -o " & DOC_NAME & ".exe -link " & DOC_NAME & ".o" & _ BUILDED 'mkcl -not-fasl-p -compile a.lisp & mkcl -o a.exe -link a.o 'exe化失敗を防ぐためにwaitの小細工 Else CMD_OPTION="-shell " & Document.Name End If TITLE="MKCL " & Document.Name EXEC_COMMAND="mkcl " & CMD_OPTION End Select Case "scm" 'Scheme TITLE="Gauche " & Document.Name EXEC_COMMAND="gosh " & Document.Name Case "clj" 'Clojure Select Case ENGINE(file_format) Case "clojure" 'Clojure(JVM) Dim version version=Split(ENGINE_PATH(ENGINE(file_format)),"-") TITLE="Clojure " & Document.Name EXEC_COMMAND= _ "java -jar """ & ENGINE_PATH(ENGINE(file_format)) & _ "\clojure-" & version(UBound(version)) & ".jar"" " & Document.Name Case "clojure-clr" 'ClojureCLR TITLE="ClojureCLR " & Document.Name EXEC_COMMAND="Clojure.Main " & Document.Name End Select Case "pas","pp" 'PASCAL TITLE="FreePascal " & Document.Name EXEC_COMMAND="fpc " & Document.Name & " & " & DOC_NAME & ".exe" Case "f","f90","f95","f03" 'Fortran TITLE="GFortran " & Document.Name EXEC_COMMAND="gfortran -o " & DOC_NAME & " " & Document.Name & " & " & DOC_NAME & ".exe" Case "cas" 'CASL II TITLE="Java CASL II " & Document.Name EXEC_COMMAND="java -jar """ & ENGINE_PATH(file_format) & "\casl2.jar"" " & Document.Name & " & " & _ "java -jar " & ENGINE(file_format) & "\run.jar " & DOC_NAME & ".obj" 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 & " & " & _ DEL_EXE() & _ EXEC_COMMAND & " & " & _ "pause > nul &" & _ "exit""",1 Set cmd=Nothing 'コマンドラインオプションの読込 Function load_option(opt) load_option=Instr(LCase(Document.GetLine(1)),opt) End Function 'exeファイルを削除するかどうか Function DEL_EXE() If load_option("delexe") Then DEL_EXE="del " & DOC_NAME & ".exe & " Else DEL_EXE="" End IF End Function </syntaxhighlight> <br> exec_sbcl_comp.lisp <syntaxhighlight lang=lisp line> ;exec_sbcl_comp.lisp ;exec_cmd.vbs SBCLコンパイル用 ;Mery以下のMacro\exec_cmd\に配置してください。 (compile-file (elt *posix-argv* 1)) </syntaxhighlight>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク