• ベストアンサー

コマンドプロンプトの条件文について

コマンドプロンプトでフォルダを作成する バッチを作っています。 コマンドは以下の内容となります。 forder.txtの内容を読み込み、その中にある内容で Cドライブの直下にフォルダを作成しています。 ただしABCDEという内容は除く。 ------------------------------------------------------- set BASE="C:\" for /F %%F in (forder.txt) do ( if not "%%F"=="ABCDE" mkdir ""%BASE%"%%F" ) ------------------------------------------------------- そこで1つ質問なのですが、 この条件分岐をOR条件にしたいのです。 ABCDEだけでなく、先頭がZから始まるレコードも除外したのです。 この場合、どのようにしたら良いのでしょうか? アドバイス頂けませんか? お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

途中に空白があるケースも考慮しておきます。 set BASE=C:\ for /f "delims=" %%F in (folder.txt) do call :sub "%%~F" goto :EOF :sub if "%~1"=="ABCDE" goto :EOF set X=%~1 if %X:~0,1%==Z goto :EOF mkdir "%BASE%%~1"

rock123
質問者

お礼

ありがとうございます。 できました。 コマンドプロンプトでも関数のようなことができるのですね。 勉強になりました。

その他の回答 (1)

noname#259269
noname#259269
回答No.1

バッチ処理だけでは、先頭1文字目を取り出すのが難しいです。 どうしてもやりたい場合は、VBScript などを介在させることになるでしょう(VBScript でコマンドパラメータを受け取り、先頭一文字目を調べて ExitCode を返す。バッチ側で ExitCode を見て処理判定)。 例えば folder.txt を以下のような構成にできませんか?(除外フォルダに空白あけて"#"のマークを付ける) A1 A2 ABCDE # Y1 Y2 Z1 # Z2 # であれば、以下で処理できます。 for /F "tokens=1,2" %%F in (folder.txt) do ( if not "%%G"=="#" mkdir ""%BASE%"%%F" )

rock123
質問者

お礼

やはり無理ですか。 ありがとうございます。 #を付けることは難しいので、 VBScriptを勉強してみます。 また質問するかもしれませんが、 そのときはよろしくお願い致します。