やりたいこと検索

通常はユーザー入力だがそれを自動で入力する

 

目次

その他の関連しそうな記事

 

通常はユーザー入力だがそれを自動で入力する

例えば、「del」コマンドなどでフォルダ内のすべてのファイルを削除しようとしたとき、「よろしいですか (Y/N)? 」といった確認メッセージが表示されます(下図)。

通常はユーザー入力だがそれを自動で入力する デフォルトの確認メッセージ

ここで、コピーを行いたい場合は「Y」を入力します。

「del」コマンドであれば「/q」オプションを付けることで確認メッセージを表示しないようにすることができますが、他の方法もあります。

それは、パイプ「|」という機能を使ってユーザー入力(キーボード入力)を自動で行う方法です。

キーを自動で入力するには、

とします。これで、[入力したいキー]をパイプ「|」の右側に書いたコマンドに引き渡すことができます。

 

「del」コマンドを例にとると、「Y」キーを自動で入力させるには、

となります。

これで、上書き確認メッセージが出ても「Y」キーが自動で入力されるため自分でキーを入力する必要はありません。

以下、実行例です。

通常はユーザー入力だがそれを自動で入力する 自動で「Y」を入力する

 

「パイプ」は右側にあるコマンドが入力を要求した時点で左側のコマンド実行結果を取り込む機能を持ちます。詳しくは、「パイプについて -コラム-」を参照して下さい。

上記の例では、オプションを付けさえすれば、わざわざパイプを使用する必要はありません。しかし、時にはこのパイプでしか解決できないような問題が生じますので、決して無駄な機能ではありません。

 

パイプは他のバッチファイルを呼び出すときにも使えます。バッチファイル「no-pipe.bat」で別のバッチファイル「sub.bat」を呼び出している場合を考えましょう。まずは、パイプを使わずに通常通り「call」コマンドだけでバッチファイルを呼び出します。「no-pipe.bat」の内容は以下の通りです。

呼び出されるバッチファイル「sub.bat」では、以下のように「del」コマンドでフォルダ内の全てのファイルを削除しようとするバッチファイルとします。

実際にバッチファイル「no-pipe.bat」を実行してみましょう。実行は単に、コマンドプロンプト上で、

と入力します。

以下、実行結果です。

通常はユーザー入力だがそれを自動で入力する 通常通りバッチファイルを呼び出す

呼び出したバッチファイル「sub.bat」で全てのファイルを削除しようとしたため確認メッセージがでました。

 

では、次はバッチファイル「sub.bat」を呼び出すときにパイプで「Y」を引き渡します。

「no-pipe.bat」を次のように書き換えます。バッチファイル名は「pipe.bat」と変更します。

これを実行すると、

通常はユーザー入力だがそれを自動で入力する パイプによって「Y」を自動入力しバッチファイルを呼び出す

今度は自動で「Y」が入力されました。。

 

では、呼び出すバッチファイルの中で2度の入力を求められた場合はどうでしょう。「sub.bat」の内容を以下のように変更した場合です。

以下は、「pipe.bat」を実行した結果です。

通常はユーザー入力だがそれを自動で入力する パイプによって 呼び出したバッチファイル内で二度入力を求められる場合

一度目の確認メッセージには「Y」が自動入力されていますが、二度目には何も入力されずにバッチファイルが終了しています。

「folder」フォルダの中は全てのファイルが削除されていましたが、「folder2」フォルダはファイルは削除されていませんでした。

このように、パイプではバッチファイルに入力を自動化させるときは一度だけ有効ですので注意して下さい。

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメントを残す