実現したいこと
set /p を含むコマンドプロンプトバッチをパイプで適切に処理したいです。
具体的には、以下のバッチファイル abc.bat を
cmd
1@echo off 2set USR_INPUT_STR= 3set /P USR_INPUT_STR="あなたの名前は?:" 4echo %USR_INPUT_STR%さん。こんにちは。
以下のように実行して、コンソール+ファイル出力を同時に行いたいです。
powershell.exe -NoLogo -Command "cmd.exe /c 'abc.bat' | Tee-Object -FilePath 'abc.log'"
しかし | (パイプ) 処理を入れてしまうと「あなたの名前は?:」が表示されるタイミングがユーザーが入力した後になり、違和感のある振る舞いになってしまいます。パイプを用いる場合でも単独でabc.batが実行される状況と同じようにしたいです。どのような方法があるでしょうか?
前提条件
Windows環境
コマンドプロンプト + PowerShell
背景
任意の外部プログラム(上記の abc.bat が一例)の実行管理を行うプログラムを作成しています。
ポイントは tee の実現です。
外部プログラムは標準出力/エラー/入力すべて含まれる可能性があり、どのようなものも受け入れられるようにしたいものです。
補足
cmd.exe /c 'abc.bat' 2>&1
としても効果はありませんでした。
powershell に限らずコマンドプロンプトでもパイプで処理すると同じような状況になります(以下、例)。
set /p USR_INPUT_STR="あなたの名前は?:" | more

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/06/24 10:33
2023/06/24 12:17 編集
2023/06/24 12:20
2023/06/24 13:41 編集
2023/06/26 01:52
2023/06/26 02:03
2023/06/26 05:00 編集
2023/06/26 11:19
2023/06/26 15:48 編集
2023/06/26 17:41 編集
2023/06/28 03:10
2023/06/28 04:00