Cosnomi

プログラミングをする医学生。物を作ること、自動化すること、今まで知らなかったことを知ることが好き。TypeScript書いたり、Pythonで機械学習したりなど。

Twitter / GitHub / Keybase
TOP >

OneDrive同期で複数端末の編集が競合してすべてのファイル名に文字列がついた

事象

外出中にノート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派の人間だけどバッチファイルは二度と触りたくない。


最後まで読んでいただきありがとうございます。コメントフォームは設置していません。訂正・意見・感想などはTwitter(@cosnomi)などへお願いします。
記事一覧へ