「
拡張子からコンソール実行
」を編集中
ナビゲーションに移動
検索に移動
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
中間の版での編集と競合したため、取り消せませんでした。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
== 概要 == [[コンソール実行]]をVBSに移植して、1ファイルのみで多言語対応出来るように機能強化したものです。 拡張子からコマンドを判別するため、以前のように呼び出す時に設定する必要はありません。 足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。 不具合要望などは以下のリンクまで。 [http://yosgspec.blog103.fc2.com/blog-entry-2939.html もう少しリファレンス] == 対応済み言語・処理系一覧 == C、C++(VC++/BCC32/GCC/G++)、D、C#(.NET framework/Mono/.NET Core/.NET)、C#Script(csi/Mono/scriptcs/dotnet-script)、<br> Java、Scala、Groovy、Perl、PHP(Phalanger)、Go、Dart、Rust、R言語、<br> JavaScript(Node.js/JScript/JScript.NET/Rhino)、TypeScript(tsc/ts-node)、Fortran(G)、<br> VBScript、VB.NET(.NET framework/Mono/.NET Core/.NET)、BASIC(FreeBasic)、HSP3(hspc)、Pascal(FPC)、Ada(GNAT)、Ruby(JRuby/IR)、Lua(JIT)、<br> Matlab(Octave)、Scilab、Python(CPython/PyPy/Jython/IPy)、なでしこ、CoffeeScript、<br> CommonLisp(CLISP/SBCL/MKCL/CCL)、EmacsLisp、Scheme(Gauche/Sagittarius)、Clojure(JVM/CLR/ClojureScript)、<br> F#、Haskell(GHC)、CASL II、NASM、.NetIL(ilasm)、BAT、WSF、PowerShell<br> ※ただし、基本的にはパスが通っていることが前提。 HSPはコマンドラインコンパイラが標準で用意されていないため断念。 公式プラグインの[[プラグイン:HSPコンパイル実行プラグイン|HSPコンパイル実行プラグイン]]をご利用ください。 ⇒[https://dev.onionsoft.net/seed/info.ax?id=1392 hspc]を使うことで部分的に対応しました。<br> コンソールアプリを使用する場合はこちらを使用した方が良いかと思います。<br> ※2 処理系ではないけどjs系はUglify.jsがコメント追記で呼べるようになりました。 == ZIP == [[Media:拡張子でコンソール実行inマクロ.zip|ダウンロード【2022/10/07版】]] [[:File:拡張子でコンソール実行inマクロ.zip|旧版]] 変換済みicoファイル込 == アイコン == [[File:拡張子でコンソール実行.png]] [[File:拡張子でコンソール実行2.png]] == ソースコード == <syntaxhighlight lang=vb line> #icon="exec_cmd.ico" #title="コンソール実行" ' exec_cmd.vbs ' 2022/10/07 19:26 Dim cmd:Set cmd=CreateObject("WScript.Shell") 'ファイルの保存 Document.Save(document.FullName) '保存してなければ終了。 If Document.Name="" Then MsgBox "ファイルが保存されてません。" Quit End If 'タイトル名 Dim TITLE '実行コマンド Dim EXEC_COMMAND '使用エンジン選択 Function ENGINE(file_format) Select Case LCase(file_format) 'C言語 Case "c" 'ENGINE="bcc32" ENGINE="gcc" 'C++ Case "cpp" ENGINE="cl" 'ENGINE="bcc32" 'ENGINE="g++" 'ENGINE="clang" 'D言語 Case "d" ENGINE="dmd" 'ENGINE="gdc" 'ENGINE="ldc" 'C# Case "cs" ENGINE="csc" 'ENGINE="mcs" 'ENGINE="msbuild" 'ENGINE="dotnet" 'C#Script Case "csx" 'ENGINE="csi" 'ENGINE="csharp" 'ENGINE="scriptcs" ENGINE="dotnet-script" 'Perl Case "pl" ENGINE="perl" 'ENGINE="perl6" 'PHP Case "php" ENGINE="php" 'ENGINE="phpc" 'JavaScript Case "js" ENGINE="node" 'ENGINE="jscript" 'ENGINE="jsc" 'ENGINE="rhino" 'TypeScript Case "ts" ENGINE="tsc" 'ENGINE="ts-node" 'VB.NET Case "vb" ENGINE="vbc" 'ENGINE="vbnc" 'ENGINE="msbuild" 'ENGINE="dotnet" 'Ruby Case "rb" ENGINE="ruby" 'ENGINE="jruby" 'ENGINE="ir" 'Lua Case "lua" ENGINE="lua" 'ENGINE="luajit" 'MATLAB Case "m" 'ENGINE="matlab" ENGINE="octave" 'Python Case "py" 'ENGINE="python" 'ENGINE="python2" ENGINE="python3" 'ENGINE="pypy" 'ENGINE="pypy3" 'ENGINE="jython" 'ENGINE="ipy" 'ENGINE="ipy64" 'LISP, CommonLisp Case "l","lisp","lsp","cl" 'ENGINE="clisp" ENGINE="sbcl" 'ENGINE="ccl" 'ENGINE="ccl64" 'ENGINE="mkcl" 'LISP, CommonLisp Case "scm" 'ENGINE="gosh" ENGINE="sash" 'Clojure Case "clj","cljs" 'ENGINE="clojure" 'ENGINE="clojure-clr" 'ENGINE="clojure-script" ENGINE="boot" 'ENGINE="lumo" End Select End Function '使用するエンジンのパス パスが通しにくかったり通らないものを記述 Function ENGINE_PATH(file_format) Select Case LCase(file_format) 'VC++ Case "cl" 'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 14.0\VC\bin" ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\bin" 'C#, VB.NET Case "csc","vbc" 'ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319" 'ENGINE_PATH="%ProgramFiles%\MSBuild\12.0\Bin" 'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\12.0\Bin" 'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin" 'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin" 'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn" 'ENGINE_PATH="%ProgramFiles%\Mono\bin" 'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn" ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn" 'Mono C#, Mono VB.NET Case "mcs","vbnc" 'ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5" ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5" 'C#Script Case "csi" 'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn" 'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn" 'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn" 'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin" 'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin" 'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn" ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn" 'Mono C#Script Case "csharp" ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5" 'ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5" 'JScript.NET Case "msbuild" 'ENGINE_PATH="msbuild" 'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild" ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild" 'ENGINE_PATH="%ProgramFiles%\Mono\bin\msbuild" Case "jsc" ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727" 'Rhino Case "rhino" ENGINE_PATH="%HOMEDRIVE%\rhino" 'TypeScript Case "ts" 'ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\TypeScript\1.0" 'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\TypeScript\1.0" ENGINE_PATH="%APPDATA%\npm" 'CoffeeScript Case "coffee" ENGINE_PATH="%APPDATA%\npm" 'Clojure(JVM) Case "clojure" 'clojure-x.x.xのバージョン表記"-x.x.x"を消すと動かなくなる。 ENGINE_PATH="%HOMEDRIVE%\clojure-1.8.0" 'F# Case "fs","ml","mli" ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\F#\3.1\Framework\v4.0" 'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\F#\3.1\Framework\v4.0" 'HSP Case "hsp" 'HSPのバージョンによってパスを変更すること。 ENGINE_PATH="%HOMEDRIVE%\hsp35" 'CASL II Case "cas" ENGINE_PATH="%HOMEDRIVE%\javaCASL2" 'NASM LINK用(VC++必須) Case "link" ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 12.0\VC\bin" 'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\bin" Case "msvcrt" ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 12.0\VC\lib" 'ENGINE_PATH="%ProgramFiles(x86)%Microsoft Visual Studio 12.0\VC\lib" Case "kernel32" ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\Windows\v7.1A\Lib" 'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Lib" Case "addlib" 'ライブラリが他に必要であれば空白区切りで与えてください。 '(ファイルパスに空白を含む時は注意) ENGINE_PATH="" 'NASM LINK用ここまで '.NetILアセンブラ Case "il" ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319" End Select End Function 'js圧縮コマンド(uglifyjs) Function COMP_JS() COMP_JS=Join(Array( _ "uglifyjs -m -o ",DOC_NAME,".min.js ",DOC_NAME,".js",br, _ "javascript-obfuscator ",DOC_NAME,".min.js --renameGlobals true --rotateStringArray true、--selfDefending true --stringArrayThreshold 0.75" _ ),"") End Function 'パッケージファイル Dim PKG_FILES 'コマンドオプション Dim CMD_OPTION 'ビルドメッセージ '頭の&は何も無い所に付け加えるため必須とする。 Dim BUILDED BUILDED=" & Echo Complited." Dim br:br=" & " '改行用 'Document.Name:現在のファイル名 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、class、obj、js、min.jsにコンパイルする形式の場合は一行目にコメントで ' delexe, delclass, delobj, deljs, delmin を含めることで '事前にexe, class, obj, js, min.jsを削除することができます。 'タイトル、実行コマンド If load_option("cmd:") Then '一行目に"cmd:"を含めるとそれ以降が実行コマンドになる。 'ただし、既定の実行エンジンも指定されないため、 'そこを含めてのコマンド設定が必要。 EXEC_COMMAND=Split(LCase(Document.GetLine(1)),"cmd:")(1) Else Select Case LCase(file_format) Case "c","cpp" 'C, C++ Select Case ENGINE(file_format) Case "cl" 'Visual C++ TITLE="Visual C++ " & Document.Name EXEC_COMMAND=Join(Array( _ """",Replace(ENGINE_PATH(ENGINE(file_format)),"\bin",""),"\vcvarsall"" & ",_ """",ENGINE_PATH(ENGINE(file_format)),"\cl"" /nologo /EHsc /openmp ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "bcc32" 'Borland C++ TITLE="Borland C++ " & Document.Name EXEC_COMMAND=Join(Array( _ "bcc32 ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "gcc" 'GCC C TITLE="GCC C " & Document.Name EXEC_COMMAND=Join(Array( _ "gcc -o ",DOC_NAME,".exe ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "g++" 'GCC C++ 'コンパイルオプション '一行目に //not11 と入力するとC++11以前のコンパイルを行う。 If load_option("//not11") Then CMD_OPTION="" Else CMD_OPTION="-std=c++11 " End If TITLE="GCC C++ " & Document.Name EXEC_COMMAND=Join(Array( _ "g++ ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "clang" 'clang C++ TITLE="clang C++ " & Document.Name EXEC_COMMAND=Join(Array( _ "clang ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") End Select Case "d" 'D言語 Select Case ENGINE(file_format) Case "dmd" TITLE="D言語(dmd) " & Document.Name EXEC_COMMAND="dmd " & Document.Name & br & DOC_NAME & ".exe" Case "gdc" TITLE="D言語(gdc) " & Document.Name EXEC_COMMAND="gdc " & Document.Name & br & DOC_NAME & ".exe" Case "ldc" TITLE="D言語(ldc) " & Document.Name EXEC_COMMAND="ldc2 " & Document.Name & br & DOC_NAME & ".exe" End Select Case "cs" 'C# 'コンパイルファイル選択 'デフォルトでフォルダ内全てをコンパイル。 '一行目に //only と加えることでそのファイルのみコンパイルを行う。 If load_option("//only") Then PKG_FILES=Document.Name Else PKG_FILES="*.cs" End If Select Case ENGINE(file_format) Case "csc" 'C# TITLE="C# " & Document.Name EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(ENGINE(file_format)),"\csc"" ", _ "/nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _ DOC_NAME,".exe" _ ),"") Case "mcs" 'Mono C# TITLE="Mono C# " & Document.Name EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(ENGINE(file_format)),"\mcs"" ", _ "-out:",DOC_NAME,".exe ",PKG_FILES," -optimize+",br, _ DOC_NAME,".exe" _ ),"") Case "msbuild" 'C# MSbuild TITLE="C# MSBuild" & Document.Name EXEC_COMMAND="""" & ENGINE_PATH(ENGINE(file_format)) & """" Case "dotnet" 'C# .NET Core/.NET TITLE="C# .NET" & Document.Name EXEC_COMMAND="dotnet run" End Select Case "csx" 'C#Script Select Case ENGINE(file_format) Case "csi" 'C#Script TITLE="C#Script " & Document.Name EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(ENGINE(file_format)),"\csi"" ",Document.Name _ ),"") Case "csharp" 'Mono C#Script TITLE="Mono C#Script " & Document.Name EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(ENGINE(file_format)),"\csharp"" ",Document.Name _ ),"") Case "scriptcs" 'ScriptCS TITLE="scriptcs " & Document.Name EXEC_COMMAND="scriptcs " & Document.Name Case "dotnet-script" 'dotnet script TITLE="detnet script " & Document.Name EXEC_COMMAND="dotnet-script " & Document.Name End Select Case "java" 'Java 'jar化は手順が面倒そうなので保留 TITLE="Java " & Document.Name EXEC_COMMAND=Join(Array( _ "javac ",Document.Name,br, _ "java ",DOC_NAME _ ),"") Case "scala" 'Scala 'コンパイルオプション '一行目に //class と加えることでclassファイルにコンパイルを行う。 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 'コンパイルオプション '一行目に //class と加えることでclassファイルにコンパイルを行う。 TITLE="Groovy " & Document.Name If load_option("//class") Then EXEC_COMMAND="groovyc " & Document.Name Else EXEC_COMMAND="groovy " & Document.Name End If Case "pl" 'Perl Select Case ENGINE(file_format) Case "perl" 'Perl5まで TITLE="Perl " & Document.Name EXEC_COMMAND="perl " & Document.Name Case "perl6" 'Perl6 TITLE="Perl6 " & Document.Name EXEC_COMMAND="perl6 " & Document.Name End Select Case "php" 'PHP Select Case ENGINE(file_format) Case "php" 'PHP TITLE="PHP " & Document.Name EXEC_COMMAND="php " & Document.Name Case "phpc" 'Phalanger TITLE="Phalanger " & Document.Name EXEC_COMMAND=Join(Array( _ "phpc /debug- /quiet ",Document.Name,br, _ "bin\",DOC_NAME,".exe" _ ),"") End Select Case "go" 'Go 'コンパイルオプション '一行目に//buildでビルドを行う。 If load_option("//build") Then CMD_OPTION="build " Else CMD_OPTION="run " End If TITLE="Go " & Document.Name EXEC_COMMAND=Join(Array( _ "go ",CMD_OPTION,Document.Name _ ),"") Case "dart" 'Dart TITLE="Dart " & Document.Name EXEC_COMMAND="dart " & Document.Name _ Case "rs" 'Rust TITLE="Rust " & Document.Name EXEC_COMMAND=Join(Array( _ "rustc ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "r","q","s" 'R言語 TITLE="R言語 " & Document.Name EXEC_COMMAND="rscript " & Document.Name Case "js" 'JavaScript If load_option("//comp") Then 'js圧縮モード '一行目にコメントで //compと加える。 TITLE="Uglify.js " & Document.Name EXEC_COMMAND=COMP_JS & BUILDED Else Select Case ENGINE(file_format) Case "node" 'Node.js 'デバッグオプション '一行目に、 ' //debug 又は //inspect 'と加えることでデバッグモードでの実行を行う。 If load_option("//debug") _ Or load_option("//inspect") Then CMD_OPTION="--inspect" Else CMD_OPTION="" End If TITLE="Node.js " & Document.Name EXEC_COMMAND=Join(Array("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=Join(Array( _ """",ENGINE_PATH(ENGINE(file_format)),"\jsc"" /nologo /out:", _ DOC_NAME,".exe ",PKG_FILES,br, _ DOC_NAME,".exe" _ ),"") Case "rhino" 'Rhino TITLE="Rhino " & Document.Name EXEC_COMMAND=Join(Array("java -jar ",ENGINE_PATH(ENGINE(file_format)),"\js.jar ",Document.Name),"") End Select End If Case "ts" 'TypeScript TITLE="TypeScript to " & ENGINE("js") & " " & Document.Name EXEC_COMMAND=Join(Array("tsc --locale ja-JP -t esnext ",Document.Name,br),"") If load_option("//comp") Then 'js圧縮モード '一行目にコメントで //compと加える。 TITLE="Uglify.js + " & TITLE EXEC_COMMAND=EXEC_COMMAND & COMP_JS & BUILDED Else Select Case ENGINE("ts") Case "tsc" 'JavaScript実行 Select Case ENGINE("js") Case "node" 'Node.js EXEC_COMMAND=Join(Array(EXEC_COMMAND, _ "node ",DOC_NAME,".js" _ ),"") Case "jscript" 'JScript EXEC_COMMAND=Join(Array(EXEC_COMMAND, _ "cscript //nologo //E:JScript ",DOC_NAME,".js" _ ),"") End Select Case "ts-node" 'ts-node EXEC_COMMAND="ts-node " & Document.Name End Select End If Case "f","f90","f95","f03" 'Fortran TITLE="GFortran " & Document.Name EXEC_COMMAND=Join(Array( _ "gfortran -o ",DOC_NAME," ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "vbs" 'VBScript TITLE="VBScript " & Document.Name EXEC_COMMAND="cscript //nologo //E:VBScript " & Document.Name Case "vb" 'VB.NET 'コンパイルファイル選択 'デフォルトでフォルダ内全てをコンパイル。 '一行目に 'only と加えることでそのファイルのみコンパイルを行う。 If load_option("'only") Then PKG_FILES=Document.Name Else PKG_FILES="*.vb" End If Select Case ENGINE(file_format) Case "vbc" 'VB.Net TITLE="VB.Net " & Document.Name EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(ENGINE(file_format)),"\vbc""", _ " /removeintchecks /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _ DOC_NAME,".exe" _ ),"") Case "vbnc" 'Mono VB.NET TITLE="Mono VB.NET" EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(ENGINE(file_format)),"\vbnc""", _ " /quiet /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _ DOC_NAME,".exe" _ ),"") Case "msbuild" 'VB.Net MSBuild TITLE="VB.Net MSBuild" & Document.Name EXEC_COMMAND="""" & ENGINE_PATH(ENGINE(file_format)) & """" Case "dotnet" 'VB.Net .NET Core/.NET TITLE="VB.Net .NET" & Document.Name EXEC_COMMAND="dotnet run" End Select Case "bas" 'BASIC TITLE="FreeBasic " & Document.Name EXEC_COMMAND=Join(Array( _ "fbc -lang deprecated ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "hsp","as" 'HSP TITLE="HSP " & Document.Name EXEC_COMMAND=Join(Array( _ ENGINE_PATH(file_format),"\hspc -mP -C ",Document.Name,br, _ "(if exist start.ax ", _ "cls",br, _ "del start.ax",br, _ "del packfile",br, _ "move /y hsptmp.exe ",DOC_NAME,".exe > nul", _ ")",br, _ DOC_NAME,".exe" _ ),"") Case "pas","pp" 'PASCAL TITLE="FreePascal " & Document.Name EXEC_COMMAND=Join(Array( _ "fpc ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "adb" 'Ada TITLE="GNAT Ada " & Document.Name EXEC_COMMAND=Join(Array( _ "gnatmake ",Document.Name,br _ ,DOC_NAME,".exe" _ ),"") Case "rb" 'Ruby 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 "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 "m" 'MATLAB Select Case ENGINE(file_format) Case "matlab" 'MATLAB '環境不所持により、動作未確認。 TITLE="Matlab " & Document.Name EXEC_COMMAND="matlab -nodisplay " & Document.Name Case "octave" 'GNU Octave TITLE="GNU Octave " & Document.Name EXEC_COMMAND="octave-cli " & Document.Name End Select Case "sce" 'Scilab '最後にexitを実行しないとreplに移行します。 'また、日本語で文字化け注意。 TITLE="Scilab " & Document.Name EXEC_COMMAND="Scilex -nwni -nb -l ja -f " & Document.Name Case "py","pyw" 'Python Select Case ENGINE(file_format) Case "python" 'Python 'コンパイルオプション '一行目に #pyc と加えることでコンパイルを行う。 If load_option("#pyc") Then CMD_OPTION="-m compileall" Else CMD_OPTION="" End If TITLE="Python " & Document.Name EXEC_COMMAND=Join(Array( _ "python ",CMD_OPTION," ",Document.Name _ ),"") Case "python2" 'Python2 TITLE="Python2 " & Document.Name EXEC_COMMAND="py -2 " & Document.Name Case "python3" 'Python3 TITLE="Python3 " & Document.Name EXEC_COMMAND="py -3 " & Document.Name Case "pypy" 'PyPy TITLE="PyPy " & Document.Name EXEC_COMMAND="pypy " & Document.Name Case "pypy3" 'PyPy3 TITLE="PyPy3 " & Document.Name EXEC_COMMAND="pypy3 " & Document.Name Case "jython" 'Jython TITLE="Jython " & Document.Name EXEC_COMMAND="jython " & Document.Name Case "ipy" 'IronPython TITLE="IronPython " & Document.Name EXEC_COMMAND="ipy " & Document.Name Case "ipy64" 'IronPython TITLE="IronPython64 " & Document.Name EXEC_COMMAND="ipy64 " & Document.Name End Select Case "coffee" 'CoffeeScript 'コンパイルオプション '一行目に #js と加えることでjsファイルにコンパイルを行う。 If load_option("#js") Then CMD_OPTION="--compile" Else CMD_OPTION="" BUILDED="" End If TITLE="CoffeeScript " & Document.Name EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(file_format),"\coffee"" ",CMD_OPTION," ",Document.Name, _ BUILDED _ ),"") If load_option("#js") And load_option("comp") Then 'js圧縮モード '一行目にコメントで #comp と加える。 TITLE="Uglify.js + " & TITLE EXEC_COMMAND=Join(Array(EXEC_COMMAND,br,COMP_JS,BUILDED),"") End If Case "nako" 'なでしこ '起動オプション '一行目にコメントで下記を含める。なしでコンソール実行 ' vnako: 標準GUI ' gnako: 簡易GUI ' pad: なでしこエディタ起動(コンパイルはエディタから行う) TITLE="なでしこ " & Document.Name If load_option("vnako") Then EXEC_COMMAND="vnako " & Document.Name ElseIf load_option("gnako") Then EXEC_COMMAND="gnako " & Document.Name ElseIf load_option("pad") Then EXEC_COMMAND="nakopad " & Document.Name Else EXEC_COMMAND="cnako " & Document.Name End If Case "l","lisp","lsp","cl" '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=Join(Array("clisp ",CMD_OPTION," ",Document.Name),"") Case "sbcl" 'SteelBankCommonLisp 'コンパイルオプション '一行目に ;fasl と加えることでfaslファイルにコンパイルを行う。 '(Macros\exec_cmdフォルダにexec_sbcl_comp.lisp 必須) 'なお、SBCLのEXE化は以下の設定文をlispファイルに書き加えることで可能となる。 '(sb-ext:save-lisp-and-die "Hello.exe" ;ファイル名 ' :toplevel #'main ;初期起動関数 ' :executable t) 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=Join(Array( _ "sbcl --script ",CMD_OPTION," ",Document.Name _ ),"") Case "ccl" 'ClozureLisp 'オプション無し。コンパイルはlispファイルに以下のような設定文を書き加える。 '(ccl:save-application "hello.exe" ;ファイル名 ' :toplevel-function #'main ;初期起動関数 ' :prepend-kernel t) TITLE="ClozureLisp " & Document.Name EXEC_COMMAND="wx86cl -K CP932 --load " & Document.Name & " --eval '(ccl:quit)'" Case "ccl64" 'ClozureLisp64 TITLE="ClozureLisp64 " & Document.Name EXEC_COMMAND="wx86cl64 -K CP932 --load " & Document.Name & " --eval '(ccl:quit)'" 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=Join(Array( _ "-not-fasl-p -compile ",Document.Name,br, _ "timeout /t 1 > nul",br, _ "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 "el" 'EmacsLisp 'コンパイルオプション '一行目に ;elc でelcファイル生成。 If load_option(";elc") Then CMD_OPTION="-batch -f batch-byte-compile" Else CMD_OPTION="-Q --script" End If TITLE="EmacsLisp " & Document.Name EXEC_COMMAND=Join(Array( _ "emacs ",CMD_OPTION," ",Document.Name _ ),"") Case "scm" 'Scheme Select Case ENGINE(file_format) Case "gosh" 'Gauche TITLE="Gauche " & Document.Name EXEC_COMMAND="gosh " & Document.Name Case "sash" 'SagittariusScheme TITLE="Sagittarius Scheme " & Document.Name EXEC_COMMAND="sash " & Document.Name End Select Case "clj","cljs" '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=Join(Array( _ "java -jar """,ENGINE_PATH(ENGINE(file_format)), _ "\clojure-",version(UBound(version)),".jar"" ",Document.Name _ ),"") Case "boot" 'Boot(Clojure) TITLE="Boot(Clojure) " & Document.Name EXEC_COMMAND="boot -f " & Document.Name Case "clojure-clr" 'ClojureCLR TITLE="ClojureCLR " & Document.Name EXEC_COMMAND="Clojure.Main " & Document.Name Case "clojure-script" 'ClojureCLR TITLE="ClojureCLR " & Document.Name EXEC_COMMAND="cljs " & Document.Name Case "lumo" 'lumo(ClojureScript) TITLE="Lumo(ClojureScript) " & Document.Name EXEC_COMMAND="lumo " & Document.Name End Select Case "tcl" 'Tcl TITLE="Tcl " & Document.Name EXEC_COMMAND=Join(Array( _ "tclsh ",Document.Name _ ),"") Case "fs","ml","mli" 'F# PKG_FILES=Document.Name TITLE="F# " & Document.Name EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(file_format),"\fsc""", _ " --nologo --out:",DOC_NAME,".exe ",PKG_FILES," --optimize+",br, _ DOC_NAME,".exe" _ ),"") Case "hs" 'Haskell TITLE="GHC " & Document.Name EXEC_COMMAND=Join(Array( _ "ghc --make ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "cas" 'CASL II TITLE="Java CASL II " & Document.Name EXEC_COMMAND=Join(Array( _ "java -jar """,ENGINE_PATH(file_format),"\casl2.jar"" ",Document.Name,br, _ "java -jar ",ENGINE(file_format),"\run.jar ",DOC_NAME,".obj" _ ),"") 'java -jar casl2.jar aaa.cas 'java -jar run.jar aaa.obj Case "asm" 'NASM TITLE="NAST " & Document.Name EXEC_COMMAND=Join(Array("nasm -f win32 ",Document.Name,br, _ """",ENGINE_PATH("link"),"\link"" /nologo /out:",DOC_NAME,".exe ",DOC_NAME,".obj ", _ """",ENGINE_PATH("msvcrt"),"\msvcrt.lib"" """,ENGINE_PATH("kernel32"),"\Kernel32.lib"" ", _ ENGINE_PATH("addlib"),br, _ DOC_NAME,".exe" _ ),"") 'nasm -f win32 aaa.asm 'link /nologo /out:aaa.exe aaa.obj msvcrt.lib Kernel32.lib 'aaa.exe Case "il" '.NetILアセンブラ TITLE=".NetIL " & Document.Name EXEC_COMMAND=Join(Array( _ """",ENGINE_PATH(file_format),"\ilasm"" /nologo /quiet ",Document.Name,br, _ DOC_NAME,".exe" _ ),"") Case "bat" 'BAT TITLE="BAT " & Document.Name EXEC_COMMAND=Document.Name Case "wsf" 'WSF TITLE="WSF " & Document.Name EXEC_COMMAND="cscript //nologo " & Document.Name Case "ps1" 'PowerShell TITLE="PowerShell " & Document.Name EXEC_COMMAND="powershell " & Document.Name Case "htm","xhtml","html" 'HTML TITLE="HTML " & Document.Name EXEC_COMMAND="start chrome " & Document.Name Case Else 'Other TITLE=Document.Name EXEC_COMMAND=Document.Name End Select End If 'コマンドライン起動 cmd.Run Join(Array( _ "cmd /C """, _ "title ",TITLE,br, _ "cd/d ",Document.Path,br, _ DEL_BINARY(), _ EXEC_COMMAND,br, _ "pause > nul",br, _ "exit"""),""),1 Set cmd=Nothing 'コマンドラインオプションの読込 Function load_option(opt) load_option=Instr(LCase(Document.GetLine(1)),opt) End Function 'exe、class、obj、min.js、jsファイルを削除するかどうか Function DEL_BINARY() DEL_BINARY="" If load_option("delexe") Then _ DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".exe",br),"") If load_option("delclass") Then _ DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".class",br),"") If load_option("delobj") Then _ DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".obj",br),"") If load_option("deljs") And file_format<>"js" Then _ DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".js",br),"") If load_option("delmin") Then _ DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".min.js",br),"") End Function </syntaxhighlight> ;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:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
編集を中止
編集の仕方
(新しいウィンドウで開きます)
スポンサーリンク
案内メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク