事象
外出中にノートPCで作業をした後、それがOneDriveによって同期されるよりも前にPCをスリープ状態にしてしまった。デスクトップPCで編集作業を行ったため、conflictを解消できなかったらしく、いつの間にか同じファイルが2つできていた。 その一方には”-XXDesktop”という文字列(デスクトップのPC名)が付いていた。
今回はデスクトップPCの編集を採用したいので、つまり、ファイル名の”-XXDesktop”を取って置き換えたい
対処法
このようなファイルは数百にも及ぶ。手作業のrenameは現実的でないのでバッチファイルを用いた。
echo off
for /R %%f in ( * ) do call :sub "%%f"
pause
exit /b
:sub
set fname=%1
set fname=%fname:-XXDesktop=%
if not %1==%fname% (
mv %1 %fname%
)
goto :EOF
このバッチファイルは、それが置かれた場所より下層にあるファイルの”-XXDesktop”を取って既存のファイルを置き換える。 例えば、OneDriveのすべてのファイルを置き換えたければ、メモ帳か何かを開きこれをコピー&ペーストし、拡張子を.batにしてOneDriveのフォルダに置いて実行すれば良い。
感想
バッチファイルは空白の扱いなどが面倒だった。Windwos派の人間だけどバッチファイルは二度と触りたくない。