ファイル名やフォルダ名に空白が入っている場合のバッチ処理方法

f:id:nanana-blog:20190531234610j:plain

こんばんは。

 

nanana-blog管理人のナナナです。

 

ブログを訪問し記事を読んでいただきありがとうございます。

 

私は仕事でバッチファイルを作成することがあります。

先日も久しぶりにバックアップをするためのバッチファイルを作成しました。

しかしバックアップが上手くいかず調べていると、ファイルパスに空白が

入っていることが原因でした。

以前にも同じようなことが原因で調べたことがあったので、忘れないように

このブログに解決方法を書いていきます。

 

 
 

 

 

 なぜ空白が入っているとエラーになるのか

バッチファイルは空白が区切り文字になります。

ファイル名やフォルダ名に空白が入っていると、その空白が区切り文字と

判断されてしまうため、引数がおかしくなってしまいエラーになってしまいます。

 

 

解決方法

二重引用符で囲む

 CドライブのProgram Filesfフォルダ内のAAA.txtファイルをコピーする場合は、

copy "C:\Program Files\AAA.txt"

のように二重引用符でファイルのフルパスを囲みます。

 

ファイルパスを変数にセットする場合も同じで、ファイルパスを二重引用符で

囲みます。

set FilePath="C:\Program Files\AAA.txt"
copy %FilePath%

 

 

ショートネームでパスを書く

コマンドプロンプトで「dir /X」と入力するとショートネームを確認することが

できます。

C:\Program Filesのショートネームを知りたい場合は、コマンドプロンプトに

「cd c:\ /X」と入力します。

赤枠で囲んである文字がショートネームです。

f:id:nanana-blog:20190531230112j:plain

 

 

ショートネームを表示させる方法

ショートネーム生成が有効になっているかを確認するためには次のコマンドを

コマンドプロンプトに入力します。

コマンドプロンプトを起動する時には、管理者権限で実行してください。

fsutil 8dot3name query C:

 ボリューム状態が0だとショートネーム生成が無効の状態です。

f:id:nanana-blog:20190531232048j:plain



 

 

ショートネーム生成を有効にする方法

上の画像では有効になっていますが、無効の場合は次のコマンドを

コマンドプロンプトで実行するとショートネーム生成が有効になります。

 fsutil 8dot3name set C: 0

ショートネーム生成を有効にしても、既に作成されているフォルダでは

作成されません。

ショートネームを作成したい場合は、フォルダの再作成をする必要があります。

 

 

最後に

いかがだったでしょうか。

本日はバッチファイルでファイルパスに空白が入っていた時の対策と

ショートネーム生成の設定方法について紹介しました。

私はたまにしかバッチファイルを作成しないため、ファイルパスに空白が

入っているたびに検索をしていましたが、ブログに書いてすぐに調べられるように

しておいたので、皆さんもせひ参考にしてください。