LoginSignup
0
0

More than 5 years have passed since last update.

Yahoo! 知恵袋(q12149830757)

Posted at

「Yahoo! 知恵袋」の以下の質問を解いてみました。

はじめに

入力された文字列を標準出力に出力するだけのバッチファイルを用意します。

q12149830757.bat
@echo off

setlocal
  echo 文字列を入力してください。
  set /p s="> "

  echo.
  echo 入力した文字列は %s% です。
endlocal

バッチファイルを実行すると、文字列の入力を求められます。

C:\>q12149830757.bat
文字列を入力してください。
> _

文字列を入力すると、入力した文字列が画面上に表示されます。

C:\>q12149830757.bat
文字列を入力してください。
> 0

入力した文字列は 0 です。

ファイルとリダイレクトを利用した場合

入力する文字列をあらかじめファイルに書き出しておきます。

C:\>(echo 1) > q12149830757.txt

標準入力からファイルを読み込みつつバッチファイルを実行すると、入力した文字列が画面上に表示されます。

C:\>q12149830757.bat < q12149830757.txt
文字列を入力してください。
>
入力した文字列は 1 です。

コマンドとパイプを利用した場合

echo コマンドとパイプを利用して標準入力から文字列を受け取りつつバッチを実行すると…

C:\>(echo 2) | q12149830757.bat
文字列を入力してください。
>
入力した文字列は 2  です。

入力した文字列は画面上に表示されますが、末尾に余分な半角空白が出力されてしまいます。

そこで set コマンドでも試してみたのですが…

C:\>(< NUL set /p t=2) | q12149830757.bat
文字列を入力してください。
>
入力した文字列は 2   です。

半角空白がもう一つ増えてしまいました。

このあたりちょっともやもやしますが、とりあえず echo コマンドとパイプの間に半角空白を含めないようにすれば問題なさそうです。

C:\>echo 2| q12149830757.bat
文字列を入力してください。
>
入力した文字列は 2 です。

おわりに

バッチファイルでまじめに解くとしたら、以下を参考にする必要がありそうですね。

標準入力の受け取り(どーでもえぐぜ)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0