09/18/2017, 11:09 PM GMT+9

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

事象

外出中にノートPCで作業をした後、それがOneDriveによって同期されるよりも前にPCをスリープ状態にしてしまった後、デスクトップPCで編集作業を行ったため、conflictを解消できなかったらしく、いつの間にか同じファイルが 2 つできていた。 その一方には”-XXDesktop”という文字列(デスクトップのPC名)が付いていた。

onedrive

今回はデスクトップ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派の人間だけどバッチファイルは二度と触りたくない。


Cosnomi
Cosnomi

コンピュータ(Web, 機械学習など)が好きな医学部生

Twitter / GitHub