拡張子からコンソール実行

提供: MeryWiki
ナビゲーションに移動 検索に移動

拡張子でコンソール実行.png 概要[編集]

コンソール実行をVBSに移植して、1ファイルのみで多言語対応出来るように機能強化したものです。
拡張子からコマンドを判別するため、以前のように呼び出す時に設定する必要はありません。
足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。
不具合要望などは以下のリンクまで。

もう少しリファレンス

拡張子でコンソール実行.png 対応済み言語処理系一覧[編集]

C、C++(VC++、BCC32、GCC、G++)、D、C#(Mono)、C#Script(Mono、scriptcs)、Java、Scala、Groovy、Perl、PHP(Phalanger)、
Go、Dart、Rust、R言語、JavaScript(Node.js、JScript、JScript.NET、Rhino)、TypeScript、Fortran(G)、
VBScript、VB.NET(Mono)、BASIC(FreeBasic)、HSP3(hspc)、Pascal(FPC)、Ada(GNAT)、Ruby(JRuby、IR)、Lua(JIT)、
Matlab(Octave)、Scilab、Python(PyPy、Jython、IPy)、なでしこ、CoffeeScript、
CommonLisp(CLISP、SBCL、MKCL、CCL)、EmacsLisp、Scheme(Gauche)、Clojure(JVM、CLR)、
F#、Haskell(GHC)、CASL II、NASM、.NetIL(ilasm)、BAT、WSF、PowerShell

※ただし、基本的にはパスが通っていることが前提。
HSPはコマンドラインコンパイラが標準で用意されていないため断念。
公式プラグインのHSPコンパイル実行プラグインをご利用ください。
 ⇒hspcを使うことで部分的に対応しました。
  コンソールアプリを使用する場合はこちらを使用した方が良いかと思います。

※2 処理系ではないけどjs系はUglify.jsがコメント追記で呼べるようになりました。

拡張子でコンソール実行.png ZIP[編集]

ダウンロード【2019/6/22版】
旧版
変換済みicoファイル込

拡張子でコンソール実行.png アイコン[編集]

  拡張子でコンソール実行.png 拡張子でコンソール実行2.png

拡張子でコンソール実行.png ソース[編集]

  1 #icon="exec_cmd.ico"
  2 #title="コンソール実行"
  3 ' exec_cmd.vbs
  4 ' 2019/06/22 7:53
  5 
  6 Dim cmd:Set cmd=CreateObject("WScript.Shell")
  7 
  8 'ファイルの保存
  9 Document.Save()
 10 
 11 '保存してなければ終了。
 12 If Document.Name="" Then
 13 	MsgBox "ファイルが保存されてません。"
 14 	Quit
 15 End If
 16 
 17 'タイトル名
 18 Dim TITLE
 19 '実行コマンド
 20 Dim EXEC_COMMAND
 21 
 22 '使用エンジン選択
 23 Function ENGINE(file_format)
 24 	Select Case LCase(file_format)
 25 		'C言語
 26 		Case "c"
 27 			'ENGINE="bcc32"
 28 			ENGINE="gcc"
 29 		'C++
 30 		Case "cpp"
 31 			ENGINE="cl"
 32 			'ENGINE="bcc32"
 33 			'ENGINE="g++"
 34 			'ENGINE="clang"
 35 		'C#
 36 		Case "cs"
 37 			ENGINE="csc"
 38 			'ENGINE="mcs"
 39 			'ENGINE="msbuild"
 40 			'ENGINE="dotnet"
 41 		'C#Script
 42 		Case "csx"
 43 			ENGINE="csi"
 44 			'ENGINE="csharp"
 45 			'ENGINE="scriptcs"
 46 		'Perl
 47 		Case "pl"
 48 			ENGINE="perl"
 49 			'ENGINE="perl6"
 50 		'PHP
 51 		Case "php"
 52 			ENGINE="php"
 53 			'ENGINE="phpc"
 54 		'JavaScript
 55 		Case "js"
 56 			'ENGINE="node"
 57 			ENGINE="jscript"
 58 			'ENGINE="jsc"
 59 			'ENGINE="rhino"
 60 		'VB.NET
 61 		Case "vb"
 62 			ENGINE="vbc"
 63 			'ENGINE="vbnc"
 64 			'ENGINE="msbuild"
 65 			'ENGINE="dotnet"
 66 		'Ruby
 67 		Case "rb"
 68 			ENGINE="ruby"
 69 			'ENGINE="jruby"
 70 			'ENGINE="ir"
 71 		'Lua
 72 		Case "lua"
 73 			ENGINE="lua"
 74 			'ENGINE="luajit"
 75 		'MATLAB
 76 		Case "m"
 77 			'ENGINE="matlab"
 78 			ENGINE="octave"
 79 		'Python
 80 		Case "py"
 81 			'ENGINE="python"
 82 			'ENGINE="python2"
 83 			ENGINE="python3"
 84 			'ENGINE="pypy"
 85 			'ENGINE="jython"
 86 			'ENGINE="ipy"
 87 			'ENGINE="ipy64"
 88 		'LISP, CommonLisp
 89 		Case "l","lisp","lsp","cl"
 90 			'ENGINE="clisp"
 91 			ENGINE="sbcl"
 92 			'ENGINE="ccl"
 93 			'ENGINE="ccl64"
 94 			'ENGINE="mkcl"
 95 		'LISP, CommonLisp
 96 		Case "scm"
 97 			ENGINE="gosh"
 98 			'ENGINE="sash"
 99 		'Clojure
100 		Case "clj","cljs"
101 			'ENGINE="clojure"
102 			ENGINE="clojure-clr"
103 			'ENGINE="clojure-script"
104 			'ENGINE="boot"
105 			'ENGINE="lumo"
106 	End Select
107 End Function
108 
109 '使用するエンジンのパス	パスが通しにくかったり通らないものを記述
110 Function ENGINE_PATH(file_format)
111 	Select Case LCase(file_format)
112 		'VC++
113 		Case "cl"
114 			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 14.0\VC\bin"
115 			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\bin"
116 			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 14.0\VC\bin"
117 			ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\bin"
118 		'C#, VB.NET
119 		Case "csc","vbc"
120 			'ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
121 			'ENGINE_PATH="%ProgramFiles%\MSBuild\12.0\Bin"
122 			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\12.0\Bin"
123 			'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
124 			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
125 			ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn"
126 			'ENGINE_PATH="%ProgramFiles%\Mono\bin"
127 		'Mono C#, Mono VB.NET
128 		Case "mcs","vbnc"
129 			ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
130 			'ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
131 		'C#Script
132 		Case "csi"
133 			ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn"
134 			'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
135 			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
136 		'Mono C#Script
137 		Case "csharp"
138 			ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
139 			'ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
140 		'JScript.NET
141 		Case "msbuild"
142 			'ENGINE_PATH="msbuild"
143 			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild"
144 			ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild"
145 			'ENGINE_PATH="%ProgramFiles%\Mono\bin\msbuild"
146 		Case "jsc"
147 			ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727"
148 		'Rhino
149 		Case "rhino"
150 			ENGINE_PATH="%HOMEDRIVE%\rhino"
151 		'TypeScript
152 		Case "ts"
153 			'ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\TypeScript\1.0"
154 			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\TypeScript\1.0"
155 			ENGINE_PATH="%APPDATA%\npm"
156 		'CoffeeScript
157 		Case "coffee"
158 			ENGINE_PATH="%APPDATA%\npm"
159 		'Clojure(JVM)
160 		Case "clojure"
161 			'clojure-x.x.xのバージョン表記"-x.x.x"を消すと動かなくなる。
162 			ENGINE_PATH="%HOMEDRIVE%\clojure-1.8.0"
163 		'F#
164 		Case "fs","ml","mli"
165 			ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\F#\3.1\Framework\v4.0"
166 			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\F#\3.1\Framework\v4.0"
167 		'CASL II
168 		Case "cas"
169 			ENGINE_PATH="%HOMEDRIVE%\javaCASL2"
170 		'NASM LINK用(VC++必須)
171 			Case "link"
172 				ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 12.0\VC\bin"
173 				'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\bin"
174 			Case "msvcrt"
175 				ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 12.0\VC\lib"
176 				'ENGINE_PATH="%ProgramFiles(x86)%Microsoft Visual Studio 12.0\VC\lib"
177 			Case "kernel32"
178 				ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\Windows\v7.1A\Lib"
179 				'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Lib"
180 			Case "addlib"
181 				'ライブラリが他に必要であれば空白区切りで与えてください。
182 				'(ファイルパスに空白を含む時は注意)
183 				ENGINE_PATH=""
184 		'NASM LINK用ここまで
185 		'.NetILアセンブラ
186 		Case "il"
187 			ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
188 	End Select
189 End Function
190 
191 'js圧縮コマンド(uglifyjs)
192 Function COMP_JS()
193 	COMP_JS=Join(Array( _
194 		"uglifyjs -m -o ",DOC_NAME,".min.js ",DOC_NAME,".js",br, _
195 		"javascript-obfuscator ",DOC_NAME,".min.js --renameGlobals true --rotateStringArray true、--selfDefending true --stringArrayThreshold 0.75" _
196 	),"")
197 End Function
198 
199 'パッケージファイル
200 Dim PKG_FILES
201 'コマンドオプション
202 Dim CMD_OPTION
203 'ビルドメッセージ
204 '頭の&は何も無い所に付け加えるため必須とする。
205 Dim BUILDED
206 BUILDED=" & Echo Complited."
207 
208 Dim br:br=" & " '改行用
209 
210 'Document.Name:現在のファイル名
211 Dim doc_names:doc_names=Split(Document.Name,".")
212 
213 '拡張子
214 Dim file_format:file_format=doc_names(UBound(doc_names))
215 doc_names(UBound(doc_names))=""
216 
217 '拡張子を除いたファイル名
218 Dim DOC_NAME
219 DOC_NAME=Join(doc_names,".")
220 DOC_NAME=Mid(DOC_NAME,1,Len(DOC_NAME)-1)
221 
222 '実行時exe、class、obj、js、min.jsにコンパイルする形式の場合は一行目にコメントで
223 ' delexe, delclass, delobj, deljs, delmin を含めることで
224 '事前にexe, class, obj, js, min.jsを削除することができます。
225 
226 'タイトル、実行コマンド
227 If load_option("cmd:") Then
228 	'一行目に"cmd:"を含めるとそれ以降が実行コマンドになる。
229 	'ただし、既定の実行エンジンも指定されないため、
230 	'そこを含めてのコマンド設定が必要。
231 	EXEC_COMMAND=Split(LCase(Document.GetLine(1)),"cmd:")(1)
232 
233 Else
234 	Select Case LCase(file_format)
235 		Case "c","cpp"	'C, C++
236 			Select Case ENGINE(file_format)
237 				Case "cl"		'Visual C++ 
238 					TITLE="Visual C++ " & Document.Name
239 					EXEC_COMMAND=Join(Array( _
240 						"""",Replace(ENGINE_PATH(ENGINE(file_format)),"\bin",""),"\vcvarsall"" & ",_
241 						"""",ENGINE_PATH(ENGINE(file_format)),"\cl"" /nologo /EHsc  /openmp ",Document.Name,br, _
242 						DOC_NAME,".exe" _
243 					),"")
244 				Case "bcc32"	'Borland C++
245 					TITLE="Borland C++ " & Document.Name
246 					EXEC_COMMAND=Join(Array( _
247 						"bcc32 ",Document.Name,br, _
248 						DOC_NAME,".exe" _
249 					),"")
250 
251 				Case "gcc"		'GCC C
252 					TITLE="GCC C " & Document.Name
253 					EXEC_COMMAND=Join(Array( _
254 						"gcc -o ",DOC_NAME,".exe ",Document.Name,br, _
255 						DOC_NAME,".exe" _
256 					),"")
257 
258 				Case "g++"		'GCC C++
259 					'コンパイルオプション
260 					'一行目に //not11 と入力するとC++11以前のコンパイルを行う。
261 					If load_option("//not11") Then
262 						CMD_OPTION=""
263 					Else
264 						CMD_OPTION="-std=c++11 "
265 					End If
266 					TITLE="GCC C++ " & Document.Name
267 					EXEC_COMMAND=Join(Array( _
268 						"g++ ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _
269 						DOC_NAME,".exe" _
270 					),"")
271 
272 				Case "clang"		'clang C++
273 					TITLE="clang C++ " & Document.Name
274 					EXEC_COMMAND=Join(Array( _
275 						"clang ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _
276 						DOC_NAME,".exe" _
277 					),"")
278 			End Select
279 
280 		Case "d"		'D言語
281 			TITLE="D言語 " & Document.Name
282 			EXEC_COMMAND="dmd " & Document.Name & br & DOC_NAME & ".exe"
283 
284 		Case "cs"		'C#
285 			'コンパイルファイル選択
286 			'デフォルトでフォルダ内全てをコンパイル。
287 			'一行目に //only と加えることでそのファイルのみコンパイルを行う。
288 			If load_option("//only") Then
289 				PKG_FILES=Document.Name
290 			Else
291 				PKG_FILES="*.cs"
292 			End If
293 
294 			Select Case ENGINE(file_format)
295 				Case "csc"		'C#
296 					TITLE="C# "+ Document.Name
297 					EXEC_COMMAND=Join(Array( _
298 						"""",ENGINE_PATH(ENGINE(file_format)),"\csc"" ", _
299 						"/nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
300 						DOC_NAME,".exe" _
301 					),"")
302 				Case "mcs"		'Mono C#
303 					TITLE="Mono C# "+ Document.Name
304 					EXEC_COMMAND=Join(Array( _
305 						"""",ENGINE_PATH(ENGINE(file_format)),"\mcs"" ", _
306 						"-out:",DOC_NAME,".exe ",PKG_FILES," -optimize+",br, _
307 						DOC_NAME,".exe" _
308 					),"")
309 				Case "msbuild"		'C# MSbuild
310 					TITLE="C# MSBuild"+ Document.Name
311 					EXEC_COMMAND="""" & ENGINE_PATH(ENGINE(file_format)) & """"
312 				Case "dotnet"		'C# .NetCore
313 					TITLE="C# .NetCore"+ Document.Name
314 					EXEC_COMMAND="dotnet run"
315 			End Select
316 
317 		Case "csx"		'C#Script
318 			Select Case ENGINE(file_format)
319 				Case "csi"			'C#Script
320 					TITLE="C#Script "+ Document.Name
321 					EXEC_COMMAND=Join(Array( _
322 						"""",ENGINE_PATH(ENGINE(file_format)),"\csi"" ",Document.Name _
323 					),"")
324 				Case "csharp"		'Mono C#Script
325 					TITLE="Mono C#Script "+ Document.Name
326 					EXEC_COMMAND=Join(Array( _
327 						"""",ENGINE_PATH(ENGINE(file_format)),"\csharp"" ",Document.Name _
328 					),"")
329 				Case "scriptcs"		'ScriptCS
330 					TITLE="scriptcs "+ Document.Name
331 					EXEC_COMMAND="scriptcs " & Document.Name
332 			End Select
333 
334 		Case "java"		'Java
335 			'jar化は手順が面倒そうなので保留
336 			TITLE="Java " & Document.Name
337 			EXEC_COMMAND=Join(Array( _
338 				"javac ",Document.Name,br, _
339 				"java ",DOC_NAME _
340 			),"")
341 
342 		Case "scala"		'Scala
343 			'コンパイルオプション
344 			'一行目に //class と加えることでclassファイルにコンパイルを行う。
345 			TITLE="Scala " & Document.Name
346 			If load_option("//class") Then
347 				EXEC_COMMAND="scalac " & Document.Name
348 			Else
349 				EXEC_COMMAND="scala " & Document.Name
350 			End If
351 
352 		Case "groovy"		'Groovy
353 			'コンパイルオプション
354 			'一行目に //class と加えることでclassファイルにコンパイルを行う。
355 			TITLE="Groovy " & Document.Name
356 			If load_option("//class") Then
357 				EXEC_COMMAND="groovyc " & Document.Name
358 			Else
359 				EXEC_COMMAND="groovy " & Document.Name
360 			End If
361 
362 		Case "pl"		'Perl
363 			Select Case ENGINE(file_format)
364 				Case "perl"
365 					TITLE="Perl " & Document.Name
366 					EXEC_COMMAND="perl " & Document.Name
367 
368 				Case "perl6"
369 					TITLE="Perl6 " & Document.Name
370 					EXEC_COMMAND="perl6 " & Document.Name
371 			End Select
372 
373 		Case "php"		'PHP
374 			Select Case ENGINE(file_format)
375 				Case "php"		'PHP
376 					TITLE="PHP " & Document.Name
377 					EXEC_COMMAND="php " & Document.Name
378 
379 				Case "phpc"		'Phalanger
380 					TITLE="Phalanger " & Document.Name
381 					EXEC_COMMAND=Join(Array( _
382 						"phpc /debug- /quiet ",Document.Name,br, _
383 						"bin\",DOC_NAME,".exe" _
384 					),"")
385 			End Select
386 
387 		Case "go"		'Go
388 			'コンパイルオプション
389 			'一行目に//buildでビルドを行う。
390 			If load_option("//build") Then
391 				CMD_OPTION="build "
392 			Else
393 				CMD_OPTION="run "
394 			End If
395 			TITLE="Go " & Document.Name
396 			EXEC_COMMAND=Join(Array( _
397 				"go ",CMD_OPTION,Document.Name _
398 			),"")
399 
400 		Case "dart"		'Dart
401 			TITLE="Dart " & Document.Name
402 			EXEC_COMMAND="dart " & Document.Name _
403 
404 		Case "rs"	'Rust
405 			TITLE="Rust " & Document.Name
406 			EXEC_COMMAND=Join(Array( _
407 				"rustc  ",Document.Name,br, _
408 				DOC_NAME,".exe" _
409 			),"")
410 
411 		Case "r","q","s"	'R言語
412 			TITLE="R言語 " & Document.Name
413 			EXEC_COMMAND="rscript " & Document.Name
414 
415 		Case "js"		'JavaScript
416 			If load_option("//comp") Then
417 				'js圧縮モード
418 				'一行目にコメントで //compと加える。
419 				TITLE="Uglify.js " & Document.Name
420 				EXEC_COMMAND=COMP_JS & BUILDED
421 			Else
422 				Select Case ENGINE(file_format)
423 					Case "node"		'Node.js
424 						'デバッグオプション
425 						'一行目に、
426 						' //debug と加えることでデバッグモードでの実行を行う。
427 						If load_option("//debug") Then
428 							CMD_OPTION="debug"
429 						Else
430 							CMD_OPTION=""
431 						End If
432 
433 						TITLE="Node.js " & Document.Name
434 						EXEC_COMMAND=Join(Array("node ",CMD_OPTION," ",Document.Name),"")
435 
436 					Case "jscript"	'JScript
437 						TITLE="JScript " & Document.Name
438 						EXEC_COMMAND="cscript //nologo //E:JScript " & Document.Name
439 
440 					Case "jsc"		'JScript.NET
441 						PKG_FILES=Document.Name
442 						TITLE="JScript.NET "+ Document.Name
443 						EXEC_COMMAND=Join(Array( _
444 							"""",ENGINE_PATH(ENGINE(file_format)),"\jsc"" /nologo /out:", _
445 								DOC_NAME,".exe ",PKG_FILES,br, _
446 							DOC_NAME,".exe" _
447 						),"")
448 
449 					Case "rhino"	'Rhino
450 						TITLE="Rhino " & Document.Name
451 						EXEC_COMMAND=Join(Array("java -jar ",ENGINE_PATH(ENGINE(file_format)),"\js.jar ",Document.Name),"")
452 				End Select
453 			End If
454 
455 		Case "ts"		'TypeScript
456 			TITLE="TypeScript to " & ENGINE("js") & " " & Document.Name
457 			EXEC_COMMAND=Join(Array("tsc -t ES6 ",Document.Name,br),"")
458 			
459 			If load_option("//comp") Then
460 				'js圧縮モード
461 				'一行目にコメントで //compと加える。
462 				TITLE="Uglify.js + " & TITLE
463 				EXEC_COMMAND=EXEC_COMMAND & COMP_JS & BUILDED
464 			Else
465 				'JavaScript実行
466 				Select Case ENGINE("js")
467 					Case "node"	'Node.js
468 						EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
469 							"node ",DOC_NAME,".js" _
470 						),"")
471 
472 					Case "jscript"	'JScript
473 						EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
474 							"cscript //nologo //E:JScript ",DOC_NAME,".js" _
475 						),"")
476 				End Select
477 			End If
478 
479 		Case "f","f90","f95","f03"	'Fortran
480 			TITLE="GFortran " & Document.Name
481 			EXEC_COMMAND=Join(Array( _
482 				"gfortran -o ",DOC_NAME," ",Document.Name,br, _
483 				DOC_NAME,".exe" _
484 			),"")
485 
486 		Case "vbs"		'VBScript
487 			TITLE="VBScript " & Document.Name
488 			EXEC_COMMAND="cscript  //nologo //E:VBScript " & Document.Name
489 
490 		Case "vb"		'VB.NET
491 			'コンパイルファイル選択
492 			'デフォルトでフォルダ内全てをコンパイル。
493 			'一行目に 'only と加えることでそのファイルのみコンパイルを行う。
494 			If load_option("'only") Then
495 				PKG_FILES=Document.Name
496 			Else
497 				PKG_FILES="*.vb"
498 			End If
499 
500 			Select Case ENGINE(file_format)
501 				Case "vbc"		'VB.Net
502 					TITLE="VB.Net "+ Document.Name
503 					EXEC_COMMAND=Join(Array( _
504 						"""",ENGINE_PATH(ENGINE(file_format)),"\vbc""", _
505 						" /removeintchecks /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
506 						DOC_NAME,".exe" _
507 					),"")
508 				Case "vbnc"		'Mono VB.NET
509 					TITLE="Mono VB.NET"
510 					EXEC_COMMAND=Join(Array( _
511 						"""",ENGINE_PATH(ENGINE(file_format)),"\vbnc""", _
512 						" /quiet /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
513 						DOC_NAME,".exe" _
514 					),"")
515 				Case "msbuild"		'VB.Net MSBuild
516 					TITLE="VB.Net MSBuild"+ Document.Name
517 					EXEC_COMMAND="""" & ENGINE_PATH(ENGINE(file_format)) & """"
518 				Case "dotnet"		'VB.Net .NetCore
519 					TITLE="VB.Net .NetCore"+ Document.Name
520 					EXEC_COMMAND="dotnet run"
521 			End Select
522 
523 		Case "bas"		'BASIC
524 			TITLE="FreeBasic " & Document.Name
525 			EXEC_COMMAND=Join(Array( _
526 				"fbc -lang deprecated ",Document.Name,br, _
527 				DOC_NAME,".exe" _
528 			),"")
529 
530 		Case "hsp","as"	'HSP
531 			TITLE="HSP " & Document.Name
532 			EXEC_COMMAND=Join(Array( _
533 				"C:\hsp35\hspc -mP --cd=",Document.Path," ",Document.Name,br, _
534 				"(if exist start.ax ", _
535 					"cls",br, _
536 					"del start.ax",br, _
537 					"del packfile",br, _
538 					"move /y hsptmp.exe ",DOC_NAME,".exe > nul", _
539 				")",br, _
540 				DOC_NAME,".exe" _
541 			),"")
542 
543 		Case "pas","pp"	'PASCAL
544 			TITLE="FreePascal " & Document.Name
545 			EXEC_COMMAND=Join(Array( _
546 				"fpc ",Document.Name,br, _
547 				DOC_NAME,".exe" _
548 			),"")
549 
550 		Case "adb"		'Ada
551 			TITLE="GNAT Ada " & Document.Name
552 			EXEC_COMMAND=Join(Array( _
553 				"gnatmake ",Document.Name,br _
554 				,DOC_NAME,".exe" _
555 			),"")
556 
557 		Case "rb"		'Ruby
558 			Select Case ENGINE(file_format)
559 				Case "ruby"		'Ruby
560 					TITLE="Ruby " & Document.Name
561 					EXEC_COMMAND="ruby " & Document.Name
562 
563 				Case "jruby"	'JRuby
564 					TITLE="JRuby " & Document.Name
565 					EXEC_COMMAND="jruby " & Document.Name
566 
567 				Case "ir"		'IronRuby
568 					TITLE="IronRuby " & Document.Name
569 					EXEC_COMMAND="ir " & Document.Name
570 			End Select
571 
572 		Case "lua"		'Lua
573 			Select Case ENGINE(file_format)
574 				Case "lua"		'Lua
575 					TITLE="Lua " & Document.Name
576 					EXEC_COMMAND="lua " & Document.Name
577 
578 				Case "luajit"	'LuaJIT
579 					TITLE="LuaJIT " & Document.Name
580 					EXEC_COMMAND="luajit " & Document.Name
581 			End Select
582 
583 		Case "m"		'MATLAB
584 			Select Case ENGINE(file_format)
585 				Case "matlab"	'MATLAB
586 					'環境不所持により、動作未確認。
587 					TITLE="Matlab " & Document.Name
588 					EXEC_COMMAND="matlab -nodisplay " & Document.Name
589 
590 				Case "octave"	'GNU Octave
591 					TITLE="GNU Octave " & Document.Name
592 					EXEC_COMMAND="octave-cli " & Document.Name
593 			End Select
594 
595 		Case "sce"		'Scilab
596 			'最後にexitを実行しないとreplに移行します。
597 			'また、日本語で文字化け注意。
598 			TITLE="Scilab " & Document.Name
599 			EXEC_COMMAND="Scilex -nwni -nb -l ja -f " & Document.Name
600 
601 		Case "py"		'Python
602 			Select Case ENGINE(file_format)
603 				Case "python"	'Python
604 					'コンパイルオプション
605 					'一行目に #pyc と加えることでコンパイルを行う。
606 					If load_option("#pyc") Then
607 						CMD_OPTION="-m compileall"
608 					Else
609 						CMD_OPTION=""
610 					End If
611 
612 					TITLE="Python " & Document.Name
613 					EXEC_COMMAND=Join(Array( _
614 						"python ",CMD_OPTION," ",Document.Name _
615 					),"")
616 
617 				Case "python2"		'Python2
618 					TITLE="Python2 " & Document.Name
619 					EXEC_COMMAND="py -2 " & Document.Name
620 
621 				Case "python3"		'Python3
622 					TITLE="Python3 " & Document.Name
623 					EXEC_COMMAND="py -3 " & Document.Name
624 
625 				Case "pypy"		'PyPy
626 					TITLE="PyPy " & Document.Name
627 					EXEC_COMMAND="pypy " & Document.Name
628 
629 				Case "jython"	'Jython
630 					TITLE="Jython " & Document.Name
631 					EXEC_COMMAND="jython " & Document.Name
632 
633 				Case "ipy"		'IronPython
634 					TITLE="IronPython " & Document.Name
635 					EXEC_COMMAND="ipy " & Document.Name
636 
637 				Case "ipy64"		'IronPython
638 					TITLE="IronPython64 " & Document.Name
639 					EXEC_COMMAND="ipy64 " & Document.Name
640 			End Select
641 
642 		Case "coffee"	'CoffeeScript
643 			'コンパイルオプション
644 			'一行目に #js と加えることでjsファイルにコンパイルを行う。
645 			If load_option("#js") Then
646 				CMD_OPTION="--compile"
647 			Else
648 				CMD_OPTION=""
649 				BUILDED=""
650 			End If
651 
652 			TITLE="CoffeeScript " & Document.Name
653 			EXEC_COMMAND=Join(Array( _
654 				"""",ENGINE_PATH(file_format),"\coffee"" ",CMD_OPTION," ",Document.Name, _
655 				BUILDED _
656 			),"")
657 			If load_option("#js") And load_option("comp") Then
658 				'js圧縮モード
659 				'一行目にコメントで #comp と加える。
660 				TITLE="Uglify.js + " & TITLE
661 				EXEC_COMMAND=Join(Array(EXEC_COMMAND,br,COMP_JS,BUILDED),"")
662 			End If
663 
664 		Case "nako"		'なでしこ
665 			'起動オプション
666 			'一行目にコメントで下記を含める。なしでコンソール実行
667 			'	vnako: 標準GUI
668 			'	gnako: 簡易GUI
669 			'	pad:   なでしこエディタ起動(コンパイルはエディタから行う)
670 			TITLE="なでしこ " & Document.Name
671 			If load_option("vnako") Then
672 				EXEC_COMMAND="vnako " & Document.Name
673 			ElseIf load_option("gnako") Then
674 				EXEC_COMMAND="gnako " & Document.Name
675 			ElseIf load_option("pad") Then
676 				EXEC_COMMAND="nakopad " & Document.Name
677 			Else
678 				EXEC_COMMAND="cnako " & Document.Name
679 			End If
680 
681 		Case "l","lisp","lsp","cl"	'LISP, CommonLisp
682 			Select Case ENGINE(file_format)
683 				Case "clisp"	'CLISP
684 					'コンパイルオプション
685 					'一行目に ;fas と加えることでfasファイルにコンパイルを行う。
686 					If load_option(";fas") Then
687 						CMD_OPTION="-c"
688 					Else
689 						CMD_OPTION=""
690 					End If
691 
692 					TITLE="CLISP " & Document.Name
693 					EXEC_COMMAND=Join(Array("clisp ",CMD_OPTION," ",Document.Name),"")
694 
695 				Case "sbcl"		'SteelBankCommonLisp
696 					'コンパイルオプション
697 					'一行目に ;fasl と加えることでfaslファイルにコンパイルを行う。
698 					'(Macros\exec_cmdフォルダにexec_sbcl_comp.lisp 必須)
699 
700 					'なお、SBCLのEXE化は以下の設定文をlispファイルに書き加えることで可能となる。
701 					'(sb-ext:save-lisp-and-die "Hello.exe"	;ファイル名
702 					'	:toplevel #'main					;初期起動関数
703 					'	:executable t)
704 
705 					If load_option(";fasl") Then
706 						Dim me_paths:me_paths=Split(Editor.FullName,"\")
707 						me_paths(UBound(me_paths))=""
708 						'Macrosフォルダのパス取得
709 						Dim me_path:me_path=Join(me_paths,"\") & "Macros\exec_cmd\"
710 
711 						CMD_OPTION=me_path & "exec_sbcl_comp.lisp"
712 					Else
713 						CMD_OPTION=""
714 					End If
715 
716 					TITLE="SBCL " & Document.Name
717 					EXEC_COMMAND=Join(Array( _
718 						"sbcl --script ",CMD_OPTION," ",Document.Name _
719 					),"")
720 
721 				Case "ccl"		'ClozureLisp
722 					'オプション無し。コンパイルはlispファイルに以下のような設定文を書き加える。
723 					'(ccl:save-application "hello.exe"	;ファイル名
724 					'	:toplevel-function #'main		;初期起動関数
725 					'	:prepend-kernel t)
726 					TITLE="ClozureLisp " & Document.Name
727 					EXEC_COMMAND="wx86cl -K CP932 --load " & Document.Name & " --eval '(ccl:quit)'"
728 
729 				Case "ccl64"	'ClozureLisp64
730 					TITLE="ClozureLisp64 " & Document.Name
731 					EXEC_COMMAND="wx86cl64 -K CP932 --load " & Document.Name & " --eval '(ccl:quit)'"
732 
733 				Case "mkcl"		'ManKaiCommonLisp
734 					'コンパイルオプション
735 					'一行目に ;fas でfasファイル生成。
736 					' ;exe でexeファイル生成
737 					If load_option(";fas") Then
738 						CMD_OPTION="-compile " & Document.Name
739 					ElseIf load_option(";exe") Then
740 						TITLE="MKCL " & Document.Name
741 						CMD_OPTION=Join(Array( _
742 							"-not-fasl-p -compile ",Document.Name,br, _
743 							"timeout /t 1 > nul",br, _
744 							"mkcl -o ",DOC_NAME,".exe -link ",DOC_NAME,".o", _
745 							BUILDED _
746 						),"")
747 						'mkcl -not-fasl-p -compile a.lisp & mkcl -o a.exe -link a.o
748 						'exe化失敗を防ぐためにwaitの小細工
749 					Else
750 						CMD_OPTION="-shell " & Document.Name
751 					End If
752 
753 					TITLE="MKCL " & Document.Name
754 					EXEC_COMMAND="mkcl " & CMD_OPTION
755 			End Select
756 
757 		Case "el"		'EmacsLisp
758 			'コンパイルオプション
759 			'一行目に ;elc でelcファイル生成。
760 			If load_option(";elc") Then
761 				CMD_OPTION="-batch -f batch-byte-compile"
762 			Else
763 				CMD_OPTION="-Q --script"
764 			End If
765 			TITLE="EmacsLisp " & Document.Name
766 			EXEC_COMMAND=Join(Array( _
767 				"emacs ",CMD_OPTION," ",Document.Name _
768 			),"")
769 
770 		Case "scm"		'Scheme
771 			Select Case ENGINE(file_format)
772 				Case "gosh"		'Gauche
773 					TITLE="Gauche " & Document.Name
774 					EXEC_COMMAND="gosh " & Document.Name
775 				Case "sash"		'SagittariusScheme
776 					TITLE="Sagittarius Scheme " & Document.Name
777 					EXEC_COMMAND="sash " & Document.Name
778 				End Select
779 
780 		Case "clj","cljs"		'Clojure
781 			Select Case ENGINE(file_format)
782 				Case "clojure"		'Clojure(JVM)
783 					Dim version
784 					version=Split(ENGINE_PATH(ENGINE(file_format)),"-")
785 					TITLE="Clojure " & Document.Name
786 					EXEC_COMMAND=Join(Array( _
787 						"java -jar """,ENGINE_PATH(ENGINE(file_format)), _
788 						"\clojure-",version(UBound(version)),".jar"" ",Document.Name _
789 					),"")
790 
791 				Case "boot"	'Boot(Clojure)
792 					TITLE="Boot(Clojure) " & Document.Name
793 					EXEC_COMMAND="boot -f " & Document.Name
794 
795 				Case "clojure-clr"	'ClojureCLR
796 					TITLE="ClojureCLR " & Document.Name
797 					EXEC_COMMAND="Clojure.Main " & Document.Name
798 
799 				Case "clojure-script"	'ClojureCLR
800 					TITLE="ClojureCLR " & Document.Name
801 					EXEC_COMMAND="cljs " & Document.Name
802 
803 				Case "lumo"	'lumo(ClojureScript)
804 					TITLE="Lumo(ClojureScript) " & Document.Name
805 					EXEC_COMMAND="lumo " & Document.Name
806 			End Select
807 
808 
809 		Case "tcl"		'Tcl
810 			TITLE="Tcl " & Document.Name
811 			EXEC_COMMAND=Join(Array( _
812 				"tclsh ",Document.Name _
813 			),"")
814 
815 
816 		Case "fs","ml","mli"		'F#
817 			PKG_FILES=Document.Name
818 			
819 			TITLE="F# "+ Document.Name
820 			EXEC_COMMAND=Join(Array( _
821 				"""",ENGINE_PATH(file_format),"\fsc""", _
822 				" --nologo --out:",DOC_NAME,".exe ",PKG_FILES," --optimize+",br, _
823 				DOC_NAME,".exe" _
824 			),"")
825 
826 		Case "hs"		'Haskell
827 			TITLE="GHC " & Document.Name
828 			EXEC_COMMAND=Join(Array( _
829 				"ghc --make ",Document.Name,br, _
830 				DOC_NAME,".exe" _
831 			),"")
832 
833 		Case "cas"		'CASL II
834 			TITLE="Java CASL II " & Document.Name
835 			EXEC_COMMAND=Join(Array( _
836 				"java -jar """,ENGINE_PATH(file_format),"\casl2.jar"" ",Document.Name,br, _
837 				"java -jar ",ENGINE(file_format),"\run.jar ",DOC_NAME,".obj" _
838 			),"")
839 			'java -jar casl2.jar aaa.cas
840 			'java -jar run.jar aaa.obj
841 
842 		Case "asm"		'NASM
843 			TITLE="NAST " & Document.Name
844 			EXEC_COMMAND=Join(Array("nasm -f win32 ",Document.Name,br, _
845 				"""",ENGINE_PATH("link"),"\link"" /nologo /out:",DOC_NAME,".exe ",DOC_NAME,".obj ", _
846 				"""",ENGINE_PATH("msvcrt"),"\msvcrt.lib"" """,ENGINE_PATH("kernel32"),"\Kernel32.lib"" ", _
847 				ENGINE_PATH("addlib"),br, _
848 				DOC_NAME,".exe" _
849 			),"")
850 			'nasm -f win32 aaa.asm
851 			'link /nologo /out:aaa.exe aaa.obj msvcrt.lib Kernel32.lib
852 			'aaa.exe
853 
854 		Case "il"		'.NetILアセンブラ
855 			TITLE=".NetIL " & Document.Name
856 			EXEC_COMMAND=Join(Array( _
857 				"""",ENGINE_PATH(file_format),"\ilasm"" /nologo /quiet ",Document.Name,br, _
858 				DOC_NAME,".exe" _
859 			),"")
860 
861 		Case "bat"		'BAT
862 			TITLE="BAT " & Document.Name
863 			EXEC_COMMAND=Document.Name
864 
865 		Case "wsf"		'WSF
866 			TITLE="WSF " & Document.Name
867 			EXEC_COMMAND="cscript  //nologo " & Document.Name
868 
869 		Case "ps1"		'PowerShell
870 			TITLE="PowerShell " & Document.Name
871 			EXEC_COMMAND="powershell " & Document.Name
872 
873 		Case "htm","xhtml","html"
874 			TITLE="HTML " & Document.Name
875 			EXEC_COMMAND="start chrome " & Document.Name
876 
877 		Case Else
878 			TITLE=Document.Name
879 			EXEC_COMMAND=Document.Name
880 	End Select
881 End If
882 
883 'コマンドライン起動
884 cmd.Run Join(Array( _
885 	"cmd /C """, _
886 	"title ",TITLE,br, _
887 	"cd/d ",Document.Path,br, _
888 	DEL_BINARY(), _
889 	EXEC_COMMAND,br, _
890 	"pause > nul",br, _
891 	"exit"""),""),1
892 
893 Set cmd=Nothing
894 
895 'コマンドラインオプションの読込
896 Function load_option(opt)
897 	load_option=Instr(LCase(Document.GetLine(1)),opt)
898 End Function
899 
900 'exe、class、obj、min.js、jsファイルを削除するかどうか
901 Function DEL_BINARY()
902 	If load_option("delexe") Then
903 		DEL_BINARY=Join(Array("del ",DOC_NAME,".exe",br),"")
904 	ElseIf load_option("delclass") Then
905 		DEL_BINARY=Join(Array("del ",DOC_NAME,".class",br),"")
906 	ElseIf load_option("delobj") Then
907 		DEL_BINARY=Join(Array("del ",DOC_NAME,".obj",br),"")
908 	ElseIf load_option("deljs") And file_format<>"js" Then
909 		DEL_BINARY=Join(Array("del ",DOC_NAME,".js",br),"")
910 	Else
911 		DEL_BINARY=""
912 	End IF
913 
914 	If load_option("delmin") Then
915 		DEL_BINARY=Join(Array("del ",DOC_NAME,".min.js",br),"")
916 	End If
917 End Function


exec_sbcl_comp.lisp
1 ;exec_sbcl_comp.lisp
2 ;exec_cmd.vbs SBCLコンパイル用
3 ;Mery以下のMacro\exec_cmd\に配置してください。
4 (compile-file (elt *posix-argv* 1))
スポンサーリンク