クリップボードのデータを読み込んでいるのは、mshta.exe の引数内の VBScript のコードです。 clipboardData オブジェクトの getData メソッドで読み込んで、それをコマンドプロンプトの世界へ戻す為に標準出力に書き込んでいます。 コマンドプロンプトの世界でそれを取り出すには、標準入力を読み込む事のできるコマンドが必要なのですが、通常コマンドでは more か sort くらいしか無いので 2 行目で テンポラリフォルダに VBScript のコードを出力しています。その VBScript のコードを cscript //nologo で読み込んで使用しています(//nologo は、cscript が標準出力になにも出力しないようにする為のもの)。この結果、標準入力に渡ったデータをパイプ経由で入力して、Wscript.Echo で表示しています。 mshta.exe は、本来 hta アプリケーションを実行させるものですが、引数の使用が URL なので、URL と同等の vbscript: で直接処理を実行させています。 2 行目では、 cmd.exe /c "" という構文で、"" の中にコマンド一式を記述する事によって、特殊記号のエスケープの問題が出ないように考慮しています。 ※ 注意 : & は ^ でエスケープする必要があります
@echo off cmd.exe /c "echo Dim Input:Input="":Do While Not WScript.StdIn.AtEndOfStream:Input=Input^&WScript.StdIn.ReadAll:Loop:WScript.Echo Input > %temp%\_.vbs" mshta.exe "vbscript:Execute("str=window.clipboardData.getData(""text""):CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).Write(str^&""""):close")" | cscript //nologo %temp%\_.vbs
|
【コマンドプロンプトの最新記事】
- Google ドライブ ファイル ストリーム にバックアップは robocopy : VBScript > コマンドプロンプト > robocopy
- コマンドプロンプト
- コマンドプロンプトから CD コマンドで『ワイルドカード』を使って移動する
- Windows のコマンドプロンプトで、標準エラー出力へ出力する
- MySQL : バックアップ : mysqldump --host=localhost --user=root --password=パスワード データベース
- バッチファイルテクニック : 他のコマンドの標準出力の結果で処理を分岐する
- コマンドプロンプトの背景色は、やっぱ「白」でしょう
- コマンドプロンプト実行時の長いプロンプトをどうにかする
- バッチファイルでレジストリの値を判断材料にする
- ファイルの表示順をシャッフルするバッチファイル
- 環境変数をカウンタとして使う
- バッチファイルで使うforコマンドが展開する変数
- コマンドプロンプト作業の基本
- コマンドプロンプト
- コマンドプロンプトのカラム数変更
- コマンドプロンプトでのネットワークドライブの割り当て