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

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

新規登録して質問してみよう
ただいま回答率
85.49%
バッチファイル

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

Q&A

解決済

1回答

2275閲覧

ファイル名でフォルダ内を検索し、存在しなければファイルを削除するバッチファイル

ya0501

総合スコア27

バッチファイル

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

0グッド

0クリップ

投稿2018/03/08 04:54

INフォルダにあるファイル名の一部をB、Cフォルダで検索し、Bフォルダになければ
INフォルダにあるファイルを削除するバッチファイルの記述方法について教えてください。

例>
INフォルダ
C:\Users\Desktop\IN
|
|------9012_test.txt
|
|------1234_abcd.xls

Bフォルダ
C:\Users\Desktop\1234|
|
|------DEFフォルダ------abcd.xls

Cフォルダ
C:\Users\Desktop\9012
|
|------GHIフォルダ
|
|------SAMPLEフォルダ------TESTフォルダ

上記の場合、1234_abcd.xlsはBフォルダ(1234)フォルダ配下に存在しているので
INフォルダから削除しない、9012_test.txtはCフォルダ(9012)フォルダ配下に存在していないので
INフォルダから削除する。

1.INフォルダのファイル名の先頭には必ずC:\Users\Desktop\〇〇〇〇\の所属ディレクトリ名(数字)が
付与され、INの直下に配置されている

2.INフォルダにあるファイル名はB、Cフォルダのサブディレクトリのどこかに存在するかもしれない

以下記述を試しましたが、これではサブフォルダの検索まではしてくれません。

cd C:\Users\Desktop\IN
for /F "tokens=1* delims=" %A in ('dir /B *.') do if not exist C:\Users\Desktop%A%B (
del "%A_%B"
)

何か良い記述がございましたらお知恵をお貸しください。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

バッチファイルにします。
dir /sでサブフォルダーも含めてファイルの存在を調べます。

DOS

1cd C:\Users\Desktop\IN 2for /F "tokens=1* delims=_" %%A in ('dir /B *_*.*') do ( 3 pushd C:\Users\Desktop\%%A 4 dir /s %%B >NUL 2>NUL 5 if errorlevel 1 ( 6 del "C:\Users\Desktop\In\%%A_%%B" 7 ) 8 popd 9)

投稿2018/03/08 15:05

編集2018/03/08 15:13
otn

総合スコア84498

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問