前提・実現したいこと
上記のように「フォルダー名を変更する際に同じフォルダー名があった時にそれを統合してくれる」機能がある、ファイル名一括変更ソフトウェアを探しています。
まず、そういうソフトウェアがあったら教えていただけますでしょうか?あればそれを教えていただければ質問は終了で構いません。
で、今のところそのようなソフトウェアを私は見つけられていないので、コマンドプロンプトかPowerShellで同等のことを実現しようと考えています。理想は以下の通りです。
E:\temp>tree /f フォルダー パスの一覧: ボリューム TTT ボリューム シリアル番号は ????-???? です E:. ├─fromわはは │ ほほほ.mp4 │ ├─fromえへへ │ ぐぬぬ.mp4 │ ├─toわはは │ うふふ.mp4 │ └─toえへへ はわわ.mp4
rem 作るバッチコマンドの実行例 newren from* to*
E:\temp>tree /f フォルダー パスの一覧: ボリューム TTT ボリューム シリアル番号は ????-???? です E:. ├─toわはは │ ほほほ.mp4 │ うふふ.mp4 │ └─toえへへ ぐぬぬ.mp4 はわわ.mp4
上記のような動作は既存のrenコマンドでは実現できないものになります。
試したこと
フォルダーひとつずつは以下でいけることは分かっています。
E:\temp>move fromわはは* toわはは fromわはは\ほほほ.mp4 1 個のファイルを移動しました。 E:\temp>rmdir /s /q fromわはは E:\temp>
しかし「フォルダー名を大量に、ワイルドカードとか、置換機能を使って直したい」となるとファイル名一括変換ツールかなと。次善策がバッチやpowershellの利用となるところです。bashなら簡単だよという話があればそれでもかまいません。
よろしくお願いします。
試したこと(その2)
どちらかというと、フォルダ名が重複したときにそれを統合してくれるファイル名一括変換ソフトを探すのが目的だったのにどうしてこうなった。
以下は私が作ったバッチファイルですが、まあ、このくらいなら書けるのです・・・・。
まあ、内容としては不完全でしてnewren hoge* hoge
としたときに以下のようには処理をしてはくれません。
hoge -> hoge hoge1 -> hoge hoge2 -> hoge hoge3 -> hoge hoge4 -> hoge
@echo off echo. rem %1=処理対象ディレクトリ rem %2=置換する文字 rem %3=置換された後の文字 if "%2"=="" ( echo 引数は2つ必要です. echo. echo newren [作業対象ディレクトリ] [置換前文字列] ^([置換後文字列]^) echo 置換後文字列が省略されたときは, 置換前文字列を消去します. echo. exit /b 1 ) set base=%1 set before=%2 set after=%3 echo 作業対象ディレクトリ: %base% echo 置換前文字列: %before% echo 置換後文字列: %after% echo. set flag=0 set exists=0 setlocal enabledelayedexpansion for /d %%a in (%base%*%before%*) do ( set from=%%a set to=!from:%before%=%after%! if !flag!==0 ( echo 以下のようにフォルダ名が置換されます. echo 変更前ディレクトリ: !from! echo 変更後ディレクトリ: !to! echo 中止する場合はCTRL+C pause set flag==1 ) echo フォルダ名変更: !from! -^> !to! If not exist !to! mkdir !to! > NUL move !from!* !to! > NUL if %errorlevel%==0 rmdir /s /q !from! > NUL set exists=1 ) if !exists!==0 ( echo フォルダは1つもありません. ) endlocal echo.
回答1件
あなたの回答
tips
プレビュー