ご利用前に必ずお読みください
> >> yuko さん > > > shell.Exec("command", shell.Exec("command", "stdin")); > > ってな感じにすれば、パイプを使ったコマンド連結風なこともできてしまいそうな予感…🤔 > > おぉ、それっぽいことできそうですよね。 > > まだ開発に着手していない段階なので、それが実際に可能かどうかは分かりませんが、もしできたら面白いですね。 > > > 上記で十分に便利そうではありますが、コマンドの終了コードを受け取れると嬉しい場面もあるかもしれません。 > > そうなんですよね。 > > 「なんちゃって shell.Exec」は、シンプルな使い勝手と開発の手間を最小限にする方向で考えていたので、`ExitCode`(終了コード) や`StdErr`(標準エラー出力) は破棄する仕様にしていました😅 > > ただ確かに、おっしゃるとおり、中途半端にそれっぽいことができちゃうと、「ExitCode や StdErr も取れたらいいな」みたいなご要望が出てきそうですね…😮💨 > > > bashで言うところの $? のような「最後のコマンドの終了コード」が取れる仕組みがあると良いかもです。 > > そうですね。PowerShell だと`$LASTEXITCODE`なんてのがあるみたいですし。 > > ということで、「どうせやるなら…」の案その 2 を考えてみました。 > > その名も「割と shell.Exec」 > > …と、その前に、本家`WScript.Shell.Exec`の概要を軽くご紹介。 > > 本家`WScript.Shell.Exec`の戻り値は`WshScriptExec`オブジェクトで、以下のようなプロパティを持っています: > > - `Status` > - `StdIn`オブジェクト > - `StdOut`オブジェクト > - `StdErr`オブジェクト > - `ProcessID` > - `ExitCode` > - `Terminate` > > この中で厄介なのが`StdIn`や`StdOut`がオブジェクト型なところで、それぞれ`Read(1)`や`ReadLine()`メソッドなどで 1 バイト、1 行ずつ読み込む仕様です。 > > つまり、文字のデコード処理をユーザー側で行う必要があるという点がネックなんですよね。 > > これは、おそらく非同期処理に対応するための設計ではないかと推測しています。 > > そこで、「割と shell.Exec」は、非同期処理をバッサリ削除した`WshScriptExec`のようなものにしちゃおうと。 > > 非同期処理用だと思われる、`Status`、`ProcessID`、`Terminate`は削除。 > > `StdIn`は「なんちゃって shell.Exec」と同様、改行区切りでまとめて渡す方式にします。 > > で、最終的に必要なのはこれだけ: > > - `StdOut`(文字列型) > - `StdErr`(文字列型) > - `ExitCode`(数値型) > > `shell.Exec`の戻り値として、このシンプルなオブジェクトを返すようなかたちです。 > > 使い方はこんな感じ: > > ``` > var exec = shell.Exec("cmd.exe", "dir\ndir", false); > outputBar.writeln(exec.StdOut); > outputBar.writeln(exec.StdErr); > outputBar.writeln(exec.ExitCode); > ``` > > こうすれば、各`Exec`オブジェクトに`ExitCode`や`StdErr`を保持できますし、同期処理なので文字のデコードも Mery 側で可能になります。 > > 「割と shell.Exec」案、開発にちょっと時間はかかるかもですが、いかがでしょうか? > > >> naka さん > > > 「cmd /k chcp 65001」で起動すると一時的にUTF-8になると思うんですが、何か問題があるんでしたっけ? > > `cmd.exe`を例に挙げたのは、デフォルトがシフト JIS なので、UTF-8 なコマンドラインツールとの扱いの違いについて説明するためでした。 > > 「`cmd.exe`を UTF-8 で使いたい」といった意図ではなく、むしろコマンドラインツールってレガシー技術でシフト JIS 専用なものも多いじゃないですか。 > > でも、そういうツールが今でも使われていたりしますよね。 > > なので、今回検討中の「Mery のマクロからコマンドラインツールを呼び出す機能」について、UTF-8 に限定してしまうと文字化けする可能性があるという話です。 > > そういった事情もあって、UTF-8 かシフト JIS かを選べるフラグを設けようという提案の一環で、例として`cmd.exe`を挙げたのですが、ちょっと例としては分かりづらかったかもしれませんね😅 > > 技術的な仕様を文字だけで正確に伝えるのは難しいこともあるので、もしうまく伝わっていなかったらご容赦いただけると嬉しいです。
マークダウンを有効にする
テキストエディター「Mery」ベータ版 v3.8.3 を公開
知っておくと便利なテキストエディター「Mery」の 10 個の小技
テキストエディター「Mery」の配色テーマ集
テキストエディター「Mery」ベータ版 Ver 2.6.9 を公開、自動保存機能、バックアップ機能を搭載
好みのカラーがきっと見つかる!テキストエディター「Mery」の美しいテーマ 101 個
トモダチコレクション わくわく生活 -Switch
トモダチコレクション わくわく生活|オンラインコード版
ニンテンドープリペイド番号 9000円|オンラインコード版
ニンテンドープリペイド番号 5000円|オンラインコード版
ニンテンドープリペイド番号 2000円|オンラインコード版
ノーゲーム・ノーライフ 13 ゲーマー兄妹たちは『魔王』を討つ(すくう)よ…
陰の実力者になりたくて! 07
異世界のんびり農家 20.5
本好きの下剋上 ハンネローレの貴族院五年生3
ソードアート・オンライン29 ユナイタル・リングVIII (電撃文庫)