bat, vbs, js ネイティブミックス (bat は vbs, js コードを実行可能)
mshtaがfile://プロトコルをhtmlとしてパースすることがわかった(注:IUnknownとhappyxxdhahaが、ここは絶対パスでないと実行されないと教えてくれた)、心の中で100万匹の草競馬が走っていたので、答えはとてもシンプルだが4年間見逃した!?
基本的なフレームワーク
<! -- : bathome
@echo off
echo I'm Batch!
mshta "file://%~f0"
pause&exit
Use the comment tag to enclose the batch section, provided that the end of the comment tag does not appear in the batch section
-->
<script language=vbs>
Msgbox "I'm VBScript!"
</script>
<script>
alert("I'm JavaScript!")
</script>
<script>close()</script>
実際、file:// プロトコル名は省略することができ、インターフェイスを気にしないのであれば、コメントタグを完全に省略することも可能です。
@echo off
echo I'm Batch!
mshta "%~f0" <nul
pause&exit
The batch section should be followed by a string of >, with more < than appears before, for mshta to distinguish which are tags
And when the previous section appears to get redirected input from the file, it is recommended to add double quotes, e.g. <"script"
>>>>>>>>>>>>>>>>>>
<script language=vbs>
Msgbox "I'm VBScript!"
</script>
<script>
alert("I'm JavaScript!")
</script>
<script>close()</script>
gotoを使ったもう一つの書き方は、もう少し直感的に理解できるかもしれません。
@goto :bat
<script language=vbs>
Msgbox "I'm VBScript!"
</script>
<script>
alert("I'm JavaScript!")
</script>
<script>close()</script>
:bat
@echo off
echo I'm Batch!
mshta "%~f0" <nul
pause&exit
ここでのホストは mshta なので、WSH ホストのメソッドやプロパティはサポートされていないことに注意してください (いくつかのプロパティやメソッドの代替案については後述します)
しかし!mshtaの何がいけないのでしょうか!?
setTimeoutのネイティブサポート
iframe のネイティブサポート
domのネイティブサポート
javascript、vbscript のネイティブサポート アクセス可能なインタラクション
Ajaxのネイティブサポート
外部スクリプトの読み込みをネイティブでサポート
ウィンドウ内のファイルを選択するためのネイティブサポート
複雑なページ間インタラクションをネイティブでサポート
...
これだけ便利なものがあるのに、数える意味があるのだろうか?
バッチ処理の本場で初公開
------------------------------------------------------------------------------------------------------------
mshtaのホストに関する知識は、以下を参照してください。
https://msdn.microsoft.com/en-us/library/ms536495(VS.85).aspx
xiaopoさんのリテラシーのおかげで、コンソーシアムにはすでにmshtaプログラムのプロトタイプがあったことに気づきました。
http://cndos.fam.cx/forum/viewthread.php?tid=39655
ミラーサイトに戻り、さらなる進展があるかどうか見てみます。
:<! --
::::::::::::::::::::::::::::::::BAT::::::::::::::::::::::::::::::::
::::::::1.Execute the HTML code before the BAT code ::::::::
@echo off
call :e Starting mshta...
pause
::::::::1. Execute the BAT code before the HTML code ::::::::
::Execution of HTML code.
start mshta %0
::::::::2. Execute the BAT code after the HTML code ::::::::
call :e Mshta is executing HTML codes...
pause
::::::::2. BAT code after executing HTML code ::::::::
::Exit BAT.
exit/b
:::::::BAT function definition section :::::::
:e
echo %*
goto :eof
:::::::BAT function definition section :::::::
::::::::::::::::::::::::::::::::BAT::::::::::::::::::::::::::::::::
-->
<! -- This sentence is used to clear the first line of :-->
<script>document.body.innerText=""</script>
<! --------------------------HTML-------------------------->
<body onkeypress=window.close()>
<hr color=red>
<marquee><font color=green>HTML Codes</font></marquee>
<hr color=red>
<! --------------------------HTML-------------------------->
<! -- BAT & HTML {[email protected]/forum 2008-4-22}
Idea: when this file is executed as a BAT file, it exits before it reaches the HTML code section.
When this file is executed as an HTML file, the BAT code section is commented out and is not executed.
-->
関連
-
単語頻度統計(繰り返し行数/各行繰り返し回数)用バッチコード
-
Windowsのbatスクリプトコマンドを使用してワンクリックでMySQLサービスを開始する方法
-
cmd 環境変数コマンド set 永続的な環境変数の設定 コマンド setx
-
1台目のハードディスクの最後のパーティションを決定し、バットコードを入力するバッチ処理
-
IPアドレス自動設定一括コード共有
-
ワンクリックcmdでJavaの環境変数を表示、変更(上書き、追加)などを設定。
-
指定したフォルダー内のファイルを遅延して削除する方法
-
リテラシーのためのDosバッチ処理コマンド
-
複数の新規ドメインをホストに一括で追加
-
重複行のフィルタリングを行うバッチ処理
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Windowsのクリップボードに文字列や日付を出力するバッチ処理
-
バッチBATスクリプトセットコマンド使用詳細(バッチハウスバッチャー)
-
管理者ユーザーを作成するためのdosnetの実装
-
Oracle、mysqlのデータベース停止・起動バッチファイル
-
Windows Server 2008 R2のリモートポート3389を変更するためのバッチコード
-
cmdでdドライブまたはdドライブ内のフォルダーを入力する
-
cmd.exe 共通スタートアップ・パラメーター入門
-
バッチ処理共通DOSコマンド(attrib、del、copy、xcopy)のバッチ処理マニュアル
-
DOS共通コマンド(echo, rem, cd, dir)の一括処理マニュアル
-
バッチ処理でftpディレクトリにファイルをアップロードする方法