質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

3218閲覧

Windowsバッチで、ファイルチェックを行いたい

Watanabe_ef

総合スコア28

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

1クリップ

投稿2015/11/09 01:04

お世話になります。

Windowsバッチでフォルダー内のファイル名のチェックを行いたいと考えております。
<フォルダ内>※例
・ABC001.csv
・ABC002.csv
・ABC003.csv
・DEF001.csv

このフォルダー内には、「ABC*.csv」のみが格納されている必要があり、「DEF001.csv」のような
ファイルが入っている場合には、処理を終了させたいと考えています。
ちなみに、ファイルチェック正常終了後は、フォルダー内の全ファイルを結合し、1つのファイルとして出力するという処理を行います。

dirでファイル名を返し、チェックをするという方法を考えましたが、ファイルチェック後に結合する際、またdirでファイルを1つ1つ呼び出すのは二度手間だと思い、思い悩んでおります。
バッチに関してはほとんど知識がありません。

ABC*.csv以外のファイルが存在した場合、処理を終了する。という記述方法をご教示ください。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じでしょうか。

@echo off setlocal : 適宜編集してください。コマンドライン引数を渡すのもいいかもしれません。 set TARGETDIR=dirname set OUTPUTFILE=filename.csv : ABC*.csvの数と全てのファイルの数を数える set COUNT_ABC=0 for %%A in (%TARGETDIR%\ABC*.csv) do set /A COUNT_ABC += 1 set COUNT_ALL=0 for %%A in (%TARGETDIR%\*.*) do set /A COUNT_ALL += 1 : 両者の数が違っていたら余分なファイルが混ざっていると判定して終了 if /I %COUNT_ABC% neq %COUNT_ALL% (echo 余分なファイルが混ざっています。&goto :eof) : ABC*.csvファイルがなければ終了 if %COUNT_ABC% == 0 (echo ABCファイルがありません。&goto :eof) : 全てのABC*.csvファイルを結合。念のためファイル名で昇順にソート。 if exist %OUTPUTFILE% del %OUTPUTFILE% for /F %%A in ('dir %TARGETDIR%\ABC*.csv /B /ON') do type %TARGETDIR%\%%A >> %OUTPUTFILE% echo 完了しました。

指定したパターン以外のファイルの数を数えるということは直接はできないので、上記のような方法をとりました。
Windowsのバッチコマンドは癖があるので取っつきにくいですが、結構複雑な処理ができるので覚えると便利かもしれません。より複雑な処理をするならWSH(JScript or VBScript)とかPowerShellを使うことになるかと思いますが。

投稿2015/11/09 02:10

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Watanabe_ef

2015/11/09 02:28

望みどおりの回答に、大変感謝しております。 回答の通り、バッチファイルを作成しましたところ、問題なく動いているようです。 今後、質問することが多々あると思いますが、また手を貸していただけると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問