※ ChatGPTを利用し、要約された質問です(原文:DOSのコマンドでうまく処理が行えません)
DOSコマンドでの処理がうまく行えない場合の対処方法
このQ&Aのポイント
DOSコマンドでバッチ処理を行う際に、条件分岐がうまく機能しない場合があります。この記事では、具体的な例を挙げながら、条件分岐の書き方と修正方法について解説します。
また、DOSコマンドの文法や基本的な使い方についても触れます。初心者の方でも理解しやすいように、具体的な例と解説を交えて紹介します。
さらに、バッチファイルの作成に役立つ情報を探している場合は、例文つきの詳しい解説があるHPを参考にすることをおすすめします。たくさんの例文を使って実践的なバッチファイル作成のヒントを得ることができます。
下記のようなバッチ処理を行おうとしたのですが、なかなかうまく処理が行われず困っています。
FOR /F " %%J IN (A.TXT) DO (
SET ANS_SET=%%J
SET ANS_VAL=%ANS_SET:~0,3%
IF %ANS_SET% == "SPC" (
ECHO テストA >> test.txt
) else (
ECHO テストB >> test.txt
)
)
A.txtの内容
SPC1A1
SPC1B1
SPC2A1
SPC2B1
SPV1A1
SPV2A1
Aテストの頭三文字が"SPC"であれば、テストAの処理を、違う場合はテストBの処理を
行いたいのですが、すべてテストBの処理を行ってしまいます。
書き方がおかしいのでしょうが、どのように修正を行えばよろしいのでしょうか?
%の使い方がいまいちわかりずらく困っています。
DOSの文法等、わかりやすいHP等あれば合わせて教えていただけませんでしょうか?
特に、例の構文がわかりやすく解説つきで書かれているものがあれば助かるのですが。
いろいろバッチファイルを作成していきたいのですが、なかなか例文つきのHPが
見つからなくて。
よろしくお願いいたします。
環境:Win2008serverR2
補足
ご回答ありがとうございました。 実は、この処理には続きがあり、テストAの処理においても、A.txtの内容により、 それぞれの処理を行いたいのです。 今度は頭四文字で処理を分けたつつ、一つ前の処理をテストAの処理を終了時に逆さまに 処理を閉じていきたいのです。 上記のsub内のテストAの処理手順は下記のとおりとなります。 (1)1レコード目を読み、テストA1を処理する。 (2)2レコード目を読み、一件前と頭4文字が同じなので、テストA1の処理をする。 (3)3レコード目を読み、一件前と頭4文字が違うので、テストA2の処理をする。 続けてテストA3の処理を行うのですが、この時、先に2レコード目の処理を終了する処理をし、 その後、1レコード目の処理を終了する処理を行います。 (4)1レコードと2レコードの処理が終了したので、3レコード目の処理のテストA1の処理を 行います。 (5)頭4文字が同じ場合は上記のような処理を繰り返します。 (6)頭の3文字が違う場合はテストBの処理を行います。 なかなか文章では説明しずらいのですが。。。 ややこしい質問ですいません。