はじめに
Windows10のコマンドプロンプトで、日本語名のファイルをバッチで名前変更して、ファイル名の頭に文字列を追加しようとしたところ、文字コードや全角スペースと言った複数の要因が混ざって苦労したので、メモとして書いておく
環境
Windows10
日本語のファイル名をバッチで変更する際に注意すべき2点と、その対応方法
1)全角スペース
2)文字コード
全角スペースについては、事前にバッチで、アンダーバーに置き換えて対応する。
文字コードについては、バッチファイルの文字コードをANSI(s-jis)にすることで対応する。
前者のバッチは、見た目は日本語が無いが、全角スペースが入っているため、文字コードは、ANSI(s-jis)にする必要がある。
rename_space.bat
rem 全角スペース、半角スペースを置き換えるバッチ
rem このファイルの文字コードは、s-jisにする必要がある(メモ帳で、ANSIにしておく)
for %%f in (*.txt) do call :sub "%%f"
exit /b
:sub
set fname=%1
set fname=%fname: =_%
set fname=%fname: =_%
ren %1 %fname%
goto :EOF
これは、
http://qeynos2525.blog.jp/archives/1075301636.html
を参考にした。
ファイル名の頭に文字を追加する変更バッチ
こちらも、さっきと同じように、文字コードはs-jisにする必要がある。
頭に文字を付ける場合、単純にrenとアスタリスクの組み合わせで変更しようとすると、その部分が上書きされて変換されるので、下のような、冗長なものになってしまっている。
rename.bat
rem このファイルの文字コードは、s-jisにする必要がある(メモ帳で、ANSIにしておく)
for %%A in (ファイル名*) do ren "%%A" "2021-04-30_%%A"