前提・実現したいこと
batでカレントディレクトリと、サブディレクトリの特定の文字をファイル名から削除したい。
例
削除したいワード:あいうえお-
before
¥あいうえお-フォルダ
¥あいうえお-フォルダ¥あいうえお-かきくけこ.zip
after
¥フォルダ
¥フォルダ¥かきくけこ.zip
試したこと
※1 このサイトを参考に、カレントディレクト内の特定文字を削除することはできました。
サブディレクトリも一括で削除しようと以下のことを試したが実現できませんでした。
・for /r でサブディレクトリのパスを取得し、さらにfor /f "tokens="を回す。 ※2
・"for /R %target_dir% %%i in (.txt) do ren %%i %%~ni"のような拡張子変更のrenを改変た
4時間ぐらい格闘したのですが実現できませんでした。
分かる方いましたら、ご教授お願い致します。
カレントディレクトリのみのソースコード ※1
@echo off setlocal enabledelayedexpansion echo ============================================= echo リネームを開始します。 echo ============================================= pushd %~dp0 :: リネームしたファイル数 set /a FILE_NUM=0 ::削除するキーワード set keyword=asdfg for /f "tokens=*" %%i in (!s!) do ( set a=%%i echo s=!s! ::リネーム ren "!a!" "!a:%keyword%=!" echo a=!a! ::リネーム名出力 echo !a:%keyword%=! set /a FILE_NUM+=1 ) echo ============================================= echo %FILE_NUM%個のファイルをリネームしました。 echo ============================================= pause
試したソースコード ※2
@echo off setlocal enabledelayedexpansion echo ============================================= echo リネームを開始します。 echo ============================================= pushd %~dp0 :: リネームしたファイル数 set /a FILE_NUM=0 ::削除するキーワード set keyword=asdfg for /r %%f in (*) do ( set s=%%f for /f "tokens=*" %%i in (!s!) do ( set a=%%i echo s=!s! ::リネーム ren "!a!" "!a:%keyword%=!" echo a=!a! ::リネーム名出力 echo !a:%keyword%=! set /a FILE_NUM+=1 ) ) echo ============================================= echo %FILE_NUM%個のファイルをリネームしました。 echo ============================================= pause
環境
・Windows10
どこで躓いているのでしょうか?コードをよく読めば回答はできるかもしれませんが時間がかかってしまします。
具体的にどんな状態なのか追記してもらえますか?(エラーで止まる、流れるけど思った通りにならない等)
回答2件
あなたの回答
tips
プレビュー