- ベストアンサー
bat 親フォルダの名前を子フォルダに追加
最近何度も質問させていただいて、恐縮ですがコードをお教えください。よろしくお願いいたします。 親フォルダ名「あ1」にbatファイルがあります。 親フォルダ内に子フォルダ名「か1」、「か2」・・・「××」があります。 batファイルを実行し、子フォルダ名のを変更したい。 変更内容は、親フォルダ名_子フォルダ名です。 か1⇒あ1_か1 か2⇒あ1_か2 ××⇒あ1_××
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記で出来ますが、in (*) のように「そこにあるすべて」じゃなくて、 in (*1) のように「名前が1で終わるフォルダーだけ」のようにすると、名前の順序によっては意図しない動作になる可能性があります。 ===================== setlocal rem あ1 に移動 pushd %~dp0 rem これで PARENT に あ1 が入るはず for /f "delims=" %%A in ("%CD%") do set "PARENT=%%~nxA" rem リネームする for /d %%A in (*) do ren "%%~A" "%PARENT%_%%~A" popd
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
> ところで、in (*1)の時、意図しない動作をするのは理由があるのでしょうか? 理由というか、CMD.EXEのバグでしょうね。 あるいは、本格的なプログラミング言語ではないので、MSは「バグじゃなくて制約」と言うかもしれませんが、「FORを使って名前の辞書的な順番を入れ替えるリネームは出来ない」とかはどこにも書いてないので、言い逃れしにくいですね。 サンプル: md AFOO md BFOO md CFOO for /d %%A in (*FOO) do ren "%%~A" "ZZZ_%%~A" dir /ad *FOO (*) か (*FOO) ヵで違いが出ます。
お礼