日々精進

新しく学んだことを書き留めていきます

csvファイルをscpでwindows pcにダウンロードし、BOMを付けるバッチ

Pandasで処理した結果をcsvにしてダウンロードしてエクセルで見るということは結構よくあるが、 そのまま開くと文字化けする。原因はエクセルがBOM無しUTF8を正しく処理してくれないため。 BOMを付ければ文字化けしなくなるが、毎回エディタを開いてBOMを付けるのめんどい。。

ということで実行すると「scpでダウンロード>BOMを付ける」までやってくれるバッチファイルを作りました。地味に便利だなぁ。。

@echo off
scp -r server:~/output/*.csv ./output
:UTF-8 -> BOM UTF-8
setlocal enabledelayedexpansion
if not exist "%TMP%\bom.utf8" powershell -nop -c "&{[IO.File]::WriteAllText('%TMP%\bom.utf8', '', [TEXT.Encoding]::UTF8)}"
for /F "usebackq delims=`" %%f in (`dir /b C:\work\my_pj\output ^| findstr /l /e /i .csv`) do (
  if !ERRORLEVEL! equ 0 (
    echo C:\work\my_pj\output\%%f
    copy /b "%TMP%\bom.utf8" + "C:\work\my_pj\output\%%f" "C:\work\my_pj\output\%%f.bom.csv" > nul
    del "C:\work\my_pj\output\%%f"
  )
)

以下を参考にして作りました。ありがとうございます。

www.shegolab.jp