【3月6日実施】システムメンテナンス実施のお知らせ

お世話になっております。

WindowsXP環境にて下記のバッチファイルがあります。

コード---

COPY D:\in\L*.txt E:\out\L*.txt

コード---

単純なコピー処理ですが、この後に下記の処理を追加したいのです。

(1)コピー元からコピー先へちゃんとコピーされたかを判定。

(2)コピー元とコピー先のテキストファイルが同一ファイルかを判定。

(3)(1)・(2)で問題なかった場合により、正常と他のテキストファイルに書き込む。
  1ファイルでもNGだったら異常と書き込む。

おそらく(1)はIF EXIST~、(2)はFC~ で問題なさそうですが
1ファイルずつ(1)・(2)をコードで書くと、膨大になってしまいます。
(3)はIFで可能かもしれません。

そもそも先頭にLがついたファイルは、以下の条件があります。

・日によってファイル数が違う。500ファイルもある場合あり。

・先頭にLがついているテキストファイル以外の共通部分がない。
 L0fje.txtとかL8hfy.txtとか・・・。固定ファイル名がない。

例えば、500ファイルもあると(1)・(2)のコードをひたすらコード入力するのは
非常に効率が悪いです。

良い方法があるでしょうか?

ご存知の方がいれば、ご教授願いますでしょうか?

宜しくお願い致します。

A 回答 (3件)

for /f %%i in (D:\in\L*.txt) do (


 if exist %%i echo %%~nxi
}

上記の1行目の書式で、"D:\in\L*.txt"に該当するファイル名のフルパス名が一つずつ変数"%%i"に入ります。"do"の後ろの"("から3行目の")"の間に実際の処理コマンドを記述します。複数行可。
フルパス名からファイル名+拡張子だけを取り出したい時には、"%%~nxi"で取り出せます。

過去に私が回答した"for"コマンド関連のQ&Aです。
(2つ目と3つ目は、in ( )の部分が若干異なります。)
『OKWave:Windowsバッチでの作成について困っております。』
http://okwave.jp/qa/q5357631.html
『OKWave:Windowsバッチでできるのかな・・・』
http://okwave.jp/qa/q5431927.html
『OKWave:バッチファイルについて』
http://okwave.jp/qa/q5387178.html
    • good
    • 0

書かれている条件だと、単に copy /v で良さそうですけど。


copy /v 実行後に、
if errorlevel 1 (echo NG>FILE.txt) else (echo OK>FILE.txt)
    • good
    • 2

for でまわす.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A