内容
Windowsでファイル名に使えない文字とその代替文字を個人用にまとめました。
Windowsでファイル名に使えない文字
記号
以下の文字はファイル名内に存在できません。
/ ? < > \ : * | "
記号は全角文字に置き換えるなどで、とりあえず回避できます。
使えない文字 | 代替文字 | 備考 |
---|---|---|
/ | / | |
? | ? | |
< | < | |
> | > | |
\ | \ | |
: | : | |
* | * | |
| | | | |
" | ” |
Linuxのシェル等と違って、シングルクォーテーション('
)は普通の文字扱いとなります。
制御文字
制御文字はファイル名内に存在できません。
代替としては、単に特定の文字列に置換する方法が良いです。他にもASCIIコードの16進数表記にするなどが考えられます。
使えない文字(例) | 代替文字 | 備考 |
---|---|---|
\t(水平タブ) |
¥t や0x09 など |
|
\n(改行) |
¥n や0x0A など |
予約語
以下の文字列は、デバイスやポート名を表す予約語で、その文字列のファイル名を作ることはできません(ファイル名の一部に含まれるのはOK)。
使えない文字列 | 代替文字列 | 備考 |
---|---|---|
com1 |
com01 や_com1 など |
|
com2 |
com02 や_com2 など |
|
com3 |
com03 や_com3 など |
|
com4 |
com04 や_com4 など |
|
com5 |
com05 や_com5 など |
|
com6 |
com06 や_com6 など |
|
com7 |
com07 や_com7 など |
|
com8 |
com08 や_com8 など |
|
com9 |
com09 や_com9 など |
|
lpt1 |
lpt01 や_lpt1 など |
|
lpt2 |
lpt02 や_lpt2 など |
|
lpt3 |
lpt03 や_lpt3 など |
|
lpt4 |
lpt04 や_lpt4 など |
|
lpt5 |
lpt05 や_lpt5 など |
|
lpt6 |
lpt06 や_lpt6 など |
|
lpt7 |
lpt07 や_lpt7 など |
|
lpt8 |
lpt08 や_lpt8 など |
|
lpt9 |
lpt09 や_lpt9 など |
|
con |
_con など |
|
nul |
_nul など |
|
prn |
_prn など |
|
aux |
_aux など |
以下、動作確認。
REM 以下はほとんどの環境で「指定されたファイルが見つかりません。」というエラーになります
copy nul com1
copy nul com2
copy nul com3
copy nul com4
copy nul com5
copy nul com6
copy nul com7
copy nul com8
copy nul com9
copy nul lpt1
copy nul lpt2
copy nul lpt3
copy nul lpt4
copy nul lpt5
copy nul lpt6
copy nul lpt7
copy nul lpt8
copy nul lpt9
copy nul aux
REM 以下は正常に実行できます
copy nul com01
copy nul com02
copy nul com03
copy nul com04
copy nul com05
copy nul com06
copy nul com07
copy nul com08
copy nul com09
copy nul _lpt1
copy nul _lpt2
copy nul _lpt3
copy nul _lpt4
copy nul _lpt5
copy nul _lpt6
copy nul _lpt7
copy nul _lpt8
copy nul _lpt9
copy nul _con
copy nul _nul
copy nul _prn
copy nul _aux
ドットで終わる
ドットで終わるファイル名は作成できません。
- ドットを別の文字に置換する
- 末端に文字を追加する
使えない文字列(例) | 代替文字列 | 備考 |
---|---|---|
a. |
a_ やa._ など |
以下、動作確認。
copy nul a.
REM 1 個のファイルをコピーしました。
echo %ERRORLEVEL%
0
REM 正常終了したようですが、作成されたファイル名を見てみます
dir
REM 2025/09/30 20:02 <DIR> .
REM 2025/09/30 19:51 <DIR> ..
REM 2025/09/30 19:58 0 a
REM
REM なぜか「a」というドットのないファイル名ができています
REM 以下は正常に実行できます
copy nul a_
copy nul a._
フルパスが260文字を超える
通常のWindowsでは、フルパスが260文字の制限があります。より長いフルパスをサポートするには、Windowsの機能を有効にする必要があります。
基本的にはフルパスが260文字を超えるようなファイル名にしないほうが無難です。
回避する方法としては、ファイル名自体をどこかで採番した連番にするとかUUIDとするなどが考えられます。
参考文献
- ファイル名およびフォルダー名の禁則文字 : 使えるねっと :: Tsukaeru.net
- ASCII.jp:Windowsでファイルやフォルダーに「使わない方がいい」文字 (1/2)
- パスの最大長の制限 - Win32 apps | Microsoft Learn
以上です。