web-dev-qa-db-ja.com

Windowsでバッチファイルの一部としてコンソール入力(yes / no)を提供する方法。

ディレクトリとそのすべてのサブディレクトリを削除する単純なバッチファイル(remove.bat)を作成しています。ファイルには次のコマンドが含まれています

rmdir /S modules

ここで、modulesは空でないディレクトリの名前です。

次のメッセージが表示されます-

C:\...\bin>rmdir /S modules
modules, Are you sure (Y/N)?

どうすればバッチファイルを介して上記のY/Nの質問にコンソール入力 "Y"を指定できますか?これを実行できるコマンドはありますか?

15
CodeBlue

他の人が指摘したように、/Qオプションを使用する必要があります。しかし、確認メッセージを抑制するオプションがコマンドになかった時代に使用されていた別の「古い学校」の方法があります。単に必要な応答をエコーし​​、値をコマンドにパイプします。

echo y|rmdir /s modules

代わりに/Qオプションを使用することをお勧めしますが、確認メッセージを抑制するオプションを提供しないコマンドを実行した場合、パイプ技術が重要になる可能性があります。

35
dbenham

空でないディレクトリを削除するにはrmdir /Sを実行し、プロンプトを表示しない場合はrmdir /Qを実行します。空でないディレクトリを静かに削除するには、rmdir /S /Qと結合します。

5
sschrass

使用する rmdir /S /Q modules

/Qは、確認プロンプトを抑制します。

2

できるよ

rmdir /Q

Qは静かです

Rmdirには適用されませんが、場合によっては、強制切り替えも解決策になる可能性があります。したがって、一般的な意味では、/ f、/ q、またはそれらのバリエーション(たとえば、Netdom RenameComputerは/ fではなく/ Forceを使用)のコマンドスイッチを調べる必要があります。

エコーパイプはきちんとしたトリックであり、常に適切なスイッチを見つけることはないため、維持するのに非常に便利です。たとえば、このY/Nプロンプトをバイパスする唯一の方法だと思います...

Echo y|NETDOM COMPUTERNAME WorkComp /Add:Work-Comp

ほぼ同一のStackOverflowポストへのリンク

0
u8it