|
958) フォーマットを1度しか行わない方法 じぇいじぇい 2003/12/12(金) 15:41 |
|
いつも参考にさせていただいております。 BATからFDをフォーマットしたいのですが、 普通にFORMATコマンドで実施した場合、 1枚目のフォーマット終了時に 「別のディスクをフォーマットしますか (Y/N)?」 と聞かれてしまいます。 これを出力せずに終了させたいのですが、 何か良い方法はございますでしょうか? 同様にDISKCOPYも、1回で終了させたいのですが…。 OS:Windows2000 |
|
966) Re:フォーマットを1度しか行わない方法 YanaKen 2003/12/15(月) 07:37 |
|
じぇいじぇいさん たとえば、 >準備ができたら Enter キーを押してください... >(中略) >続けますか(Y/N) という2つのプロンプトが出ることがあらかじめわかっている"FOO"というコマンドに対しては、 ----[START] [改行] N ----[END] ……のような応答内容のテキストファイルをあらかじめ作っておき、 FOO <ANSWER.TXT ……のようにリダイレクト指定することで、キーボードからの入力を省略することが一般的には可能です。 ただ、途中でなんらかのエラーがからんだ場合の対応がむずかしくなったり、誤操作対策面で不安が残ります。FORMAT/DISKCOPYはディスク内容が消去されてしまうコマンドなので、あんまりこういった強制的な自動化には向かない気はします。 Manager YanaKen |
|
970) Re2:フォーマットを1度しか行わない方法 じぇいじぇい 2003/12/15(月) 15:25 |
|
YanaKen様 どうもありがとうございます。 リダイレクトの方法も考えたのですが、フォーマット処理に 時間がかかるため、タイムラグでコマンド発行時の入力(てきすと) が、フォーマット終了時に有効にならないだろうとおもい、 ためしもしなかったです。 試してみて、確かに自動になったのですが、何かおかしいです。 入力ファイル 【改行】 フォーマット開始に対するENTER 【改行】 ラベルをつけるかどうかに対するENTER 【N】 続けるかどうかのN(キャンセル) というファイルを Format /q FOO.TXT とすると、うまくフォーマットが1回実行されます。 同じテキストファイルを 【改行】 【改行】 【Y】 とすると、2回、フォーマットが実行されます。 さらに 【改行】 でも、 【N】 でも、どちらも1回自動でフォーマットします。 これってどういうことなのでしょう? リダイレクトにファイルを指定した場合は、 1入力要求に付き1行が渡されるのではないのでしょうか? また、上記の方法では、DISKCOPYは無理ですね。 DISK入れ替えが完了するまで待つ…なんてできるのでしょうか? (つまり、他は自動だけど、DISK入れ替えのところだけ、手動) > ただ、途中でなんらかのエラーがからんだ場合の対応がむずかしくなったり、誤操作対策面で不安が残ります。FORMAT/DISKCOPYはディスク内容が消去されてしまうコマンドなので、あんまりこういった強制的な自動化には向かない気はします。 FORMAT実行前にBATで「ほんとにいいですか?」と聞くようにしています。 以上、よろしくお願いします。 |
|
971) Re3:フォーマットを1度しか行わない方法 じぇいじぇい 2003/12/15(月) 15:26 |
|
すみません、訂正します。 >入力ファイル >【改行】 フォーマット開始に対するENTER >【改行】 ラベルをつけるかどうかに対するENTER >【N】 続けるかどうかのN(キャンセル) >というファイルを >Format /q < FOO.TXT >とすると、うまくフォーマットが1回実行されます。 > |
|
990) Re3:フォーマットを1度しか行わない方法 YanaKen 2003/12/19(金) 01:32 |
|
じぇいじぇい さん >同じテキストファイルを >【改行】 >【改行】 >【Y】 >とすると、2回、フォーマットが実行されます。 【Y】と答えて処理をループさせるのはそもそもご質問の前提(1度きりで終了させたい)と矛盾してるようにも思えますが、ともあれ、 >リダイレクトにファイルを指定した場合は、 >1入力要求に付き1行が渡されるのではないのでしょうか? ご質問の「何かおかしい」現象は、【Y】のあとの改行が影響したものでしょう。 「キーをどれか押してください」とか「Y/N」などのタイミングでは「行」ではなく「1文字」単位で読み取られます。応答に必要な文字が【改行】【改行】【Y】だとすれば、厳密には次の内容が必要十分な応答用文字列ということになります。 【改行】【改行】Y(ファイル末尾) ※Yのあとに改行がなく、いきなりファイルが終わっている形のファイルは、Windows版のテキストエディタ等でも作れますが、コマンドライン上でも、たとえば次のようにすると簡単に作成できます。 COPY CON Y.TXT 【改行】【改行】Y【Ctrlを押しながらZを押す】【改行】 >また、上記の方法では、DISKCOPYは無理ですね。 「どうしても」という場合、FDD増設というテは考えられるかと思います。 Manager YanaKen |
|
991) Re3:フォーマットを1度しか行わない方法 Hellcat 2003/12/20(土) 16:24 |
|
>リダイレクトにファイルを指定した場合は、 >1入力要求に付き1行が渡されるのではないのでしょうか? 一行が渡される場合もあれば一文字の場合もあります。 要は、当該応答要求メッセージがどのような命令語を使っているかによります。 例えば、WinMEのdelコマンドで del hoge.txt /P とした場合の hoge.txt, 削除しますか (Y/N)? というメッセージは"Y"又は"N"の一文字のみ入力すれば足り、ENTERキーを押下する必要はありません。 (Win2000のdelコマンドはENTERキーの押下が必要かも知れません) 一文字しか受け取らないメッセージや、一行単位で受け取るメッセージが混在して出力される場合の自動応答用のテキストファイル(anser.txt)を作成する場合は、注意が必要です。 Windowsでは【改行】はCR(carriage return 行頭復帰)とLF(line feed 改行)の2バイトから構成されますので、一文字しか受け取らないメッセージに対して【改行】を付すと、このCRとLFの2バイトが渡されずに残されてしま い、次の応答要求メッセージが出力された場合の入力文字として渡されてしまいます。 YanaKenさんが書かれているように、FORMATコマンドは予期せぬ応答要求メッセージ(例えば入出力エラーなど)が出力されるおそれが高く、「自動応答」的な方式では、当然、臨機応変な応答ができず危険だと思います。 また、WinMEではanser.txtファイルの終端に達した後に、さらに応答要求メッセージが出力された場合はハングアップしてしまうようです。Win2000ではどうでしょうか、手許にないので検証できていませんが…。 |
- ◆958. フォーマットを1度しか行わない方法 (じぇいじぇい) 2003/12/12(金) 15:41
- 966. Re:フォーマットを1度しか行わない方法 (YanaKen) 2003/12/15(月) 07:37
- 970. Re2:フォーマットを1度しか行わない方法 (じぇいじぇい) 2003/12/15(月) 15:25
- 971. Re3:フォーマットを1度しか行わない方法 (じぇいじぇい) 2003/12/15(月) 15:26
- 990. Re3:フォーマットを1度しか行わない方法 (YanaKen) 2003/12/19(金) 01:32
- 991. Re3:フォーマットを1度しか行わない方法 (Hellcat) 2003/12/20(土) 16:24
- 970. Re2:フォーマットを1度しか行わない方法 (じぇいじぇい) 2003/12/15(月) 15:25
- 966. Re:フォーマットを1度しか行わない方法 (YanaKen) 2003/12/15(月) 07:37