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

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

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

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

Q&A

解決済

1回答

908閲覧

特定のファイルを含むフォルダのリネームについて

ya0501

総合スコア27

バッチファイル

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

0グッド

1クリップ

投稿2018/02/08 07:24

指定したフォルダ配下に特定のファイルがある場合、指定したフォルダの
リネームを行うバッチファイルを作成しております。

下記記述でリネーム自体は可能になったのですが、
このバッチは定期的に複数回実行するためすでにリネームされている
フォルダについてもまたリネームされてしまいます。

すでにリネーム済みのフォルダはスキップするという動作にしたいのですが、
良い方法がございましたらお知恵をお貸しください。

DOS

1cd C:\Users\Desktop\IN1 2 3dir /s /b > C:\Users\Desktop\file.tmp 4 5for /f "delims=" %%F in (C:\Users\kcc\Desktop\file.tmp) do ( 6 7rem ①パス名の分解(ディレクトリ名の取り出し) 8for /f "delims=\ tokens=5" %%D in ("%%F") do ( 9 10rem ②リネーム 11IF EXIST "C:\Users\Desktop\IN1\%%D\abc.txt" rename %%D %%D_除外 12 ))

説明>
C:\Users\Desktop\IN1
|
|
|--------フォルダA
| |
| |------abc.txt
|
|--------フォルダB

   ↓

C:\Users\Desktop\IN1
|
|
|--------フォルダA_除外
| |
| |------abc.txt
|
|--------フォルダB

フォルダA、B、・・とあり、各フォルダ直下にabc.txtがある場合のみ
フォルダ名の後部に"_除外"を付与する

・想定
すでにリネームされたものはスキップしたい
abc.txtが無く、リネーム済みのものは"_除外"部分を消したい

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以前のリネームの事は忘れてこんな感じでしょうか。

1.全てのディレクトリに対して以下を実行
2.ディレクトリ名に「_除外」があればそれを削除
3.ディレクトリ内に「abc.txt」があれば、ディレクトリ名に「_除外」を付ける
4.必要があれば、リネーム実行

DOS

1cd C:\Users\Desktop\IN1 2for /f "delims=" %%D in ('dir /s /b /ad') do call :SUB "%%~D" 3goto :EOF 4 5:SUB 6set DIR=%~1 7set OLD=%~nx1 8set NEW=%OLD:_除外=% 9if exist "%DIR%\abc.txt" set NEW=%NEW%_除外 10if "%OLD%" neq "%NEW%" ren "%DIR%" "%NEW%" 11goto :EOF

↓こういうケースがあると先にDIRAがリネームされるので、DIRXのリネームが失敗すると思いますが、想定範囲外です。

plain

1IN1-----DIRA--+--abc.txt 2 | 3 +--DIRX--abc.txt

投稿2018/02/08 09:35

otn

総合スコア84555

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

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

sa-yu

2018/02/08 15:35

"dir /s /b /ad"の部分を"dir /s /b /ad | sort /r"とかで逆順ソートかければ、想定外と言っているケースにも対応できたりしないですかね。
otn

2018/02/09 00:45

そうですね。それで出来そうに思います。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問