以下のようなバッチプログラムを作っています。
echo %date% %time% 開始しました。
rem レポートに関する環境変数
set rep01=01_A表
set rep02=02_B表
set rep03=03_C表
set rep04=04_D表
set rep05=05_E表
for %%d in (dora emon) do (
rem ディレクトリに関する環境変数
set OUT_PATH=d:\%%d\o_files
set DOWN_PATH=d:\%%d\dl_files
set PUB_PATH=d:\%%d\p_files
set BAK_PATH=d:\%%d\b_files
set LOG_PATH=d:\%%d\batch_log
for %%z in (0001 0002 0003 0004 0005) do (
for %%r in (%rep01% %rep02% %rep03% %rep04% %rep05%) do (
if exist OUT_PATH\%%z\*.htm *.xls GOTO RESULT_01 else GOTO RESULT_02
:RESULT_01 echo ファイルが存在します。
:RESULT_02 echo %date% %time% %%z ファイルがありません。)))
ここまでで、コマンドの構造が誤っています。
とエラーがでます。
FORのネストができないのかなって思ったりするのですが、初プログラムに挑戦中で、わかりません。
質問の仕方すらなっていないと承知していますが、
どうか、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
初プログラムにしては難しすぎますね。
Windows2000,XP,2003だとして回答します、
forのネストは出来ますが、for do の後の括弧内でgoto命令は使えません。正確には、gotoしたとたん、forループから抜け出たと解釈されます。
例えば下記のようにしてください。
for %%z in (0001 0002 0003 0004 0005) do (
for %%r in (%rep01% %rep02% %rep03% %rep04% %rep05%) do (
if exist OUT_PATH\%%z\*.htm *.xls (
echo ファイルが存在します。
) else (
echo %date% %time% %%z ファイルがありません。)))
ただし、これでも
if exist OUT_PATH\%%z\*.htm *.xls
のところが意味不明の構文なのでエラーになります。「該当ディレクトリに*.htmまたは*.xlsのファイルがあれば」という判断をしたいなら一つのif文では出来ません。
for %%z in (...) do (
for %%r in (...) do call :sub %%z
)
次の処理
goto :eof
:sub
if exist %OUT_PATH%\%1\*.htm echo ファイルが存在します&goto :eof
if exist %OUT_PATH%\%1\*.xls echo ファイルが存在します&goto :eof
echo ファイルがありません
goto :eof
のようにサブルーチンに飛ばして処理します。サブルーチンの中ならgotoも使えます。
No.2
- 回答日時:
ラベルの後にそのままコマンドを書くことはできません。
次のように行を分けます。:RESULT_01
echo ファイルが存在します。
:RESULT_02
echo %date% %time% %%z ファイルがありません。
ただ、このままだと RESULT_01 のときもファイルがありませんと表示されてしまいますが……。
あと、
if exist OUT_PATH\%%z\*.htm *.xls GOTO...
の *.xls ってなんでしょうか?
No.1
- 回答日時:
まず、バッチ処理でここまでの処理は市内方が良いと思いますが……
for のネスト自体はできます。
ただし、バッチ処理では、複数行にわたる命令はありません。for は、パラメータを変えながら、同じ行にあるコマンドを実行する命令です。
ですから、
for %%z in (.....) do for %%z in (.....) do ....
と1行で書けばOKです。(2番目の for の前に、 do が必要な点に注意)
また、 if には、 else はありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- MySQL php テーブルを作れない 2 2022/11/17 18:22
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
-
4
Windowsのバッチファイルで正規表現の置換方法について…
Windows 10
-
5
コマンドプロンプトでのエスケープ文字
Windows 10
-
6
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
7
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
8
バッチファイル内置換
その他(開発・運用・管理)
-
9
findstrのerrorlevel
その他(プログラミング・Web制作)
-
10
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
-
11
echoの出力の最後のスペースを除去したい
iOS
-
12
DOSコマンドのforで空白行をスキップしない
UNIX・Linux
-
13
テキストファイルから最終行の抽出
Windows Me・NT・2000
-
14
コマンドプロンプトで変数が数字であることを判定する方法
その他(プログラミング・Web制作)
-
15
バッチファイル 別ファイルにリストしてあるファイルをコピーしたい
その他(プログラミング・Web制作)
-
16
DOSコマンドでのワイルドカードの使い方
Windows Vista・XP
-
17
バッチファイル 二つ上のディレクトリのパス取得
その他(プログラミング・Web制作)
-
18
コマンドプロンプトで、指定したファイルが開いているかを判別をループする方法
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトで変数が数...
-
バッチコマンドでファイル名の...
-
コマンドプロンプトでファイル...
-
バッチファイルで、iniファイル...
-
[DOS] コピー先に同じファイル...
-
ftp処理でmove(移動)を行いたい
-
【Access】エクスポート時のフ...
-
access,vbaでフォルダ内のファ...
-
ExcelVBAのDirでスペース含むフ...
-
■ファイルのリネーム(rename)...
-
テキストファイルのファイル名...
-
ファイル名を変更して移動させ...
-
ファイル名に ” を使うと エク...
-
画像フォルダをまとめるバッチ...
-
.batでファイル名から抽出して...
-
前日日付のファイルGETバッチ
-
AppleScriptで特定のファイルを...
-
バッチファイル Windows2000 ...
-
バッチファイルでファイルを置換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトでファイル...
-
バッチファイルで、iniファイル...
-
バッチコマンドでファイル名の...
-
コマンドプロンプトで変数が数...
-
[DOS] コピー先に同じファイル...
-
フォルダ内の更新日時が一番新...
-
ftp処理でmove(移動)を行いたい
-
ExcelVBAのDirでスペース含むフ...
-
.batでファイル名から抽出して...
-
DOSのバッチ作成について‐FORの...
-
access,vbaでフォルダ内のファ...
-
Windowsコマンドプロンプトで、...
-
【DOSバッチ開発】末尾のタブの...
-
word VBA ファイル名 保存
-
【vbs】ファイル名の検索と該当...
-
コマンドプロンプトまたはpower...
-
ファイル名を該当フォルダ内か...
-
バッチ処理で16進数でファイル...
-
スタートアップのファイルをバ...
おすすめ情報