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

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

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

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

もう少しリファレンス

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

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

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

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

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

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

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

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

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

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