社内SEの話

日々起きたことの記録用

【PowerShell】フォルダ名語尾に半角スペースがある時

↓プログラミングで副業を考えたらこちら↓

ExcelCSVなどのリストからフォルダを作成したり、そのフォルダにファイルの移動、コピーする事例があります。

その際にリストの最後に半角スペースが存在し、エラーが発生しスクリプトが止まってしまいます。

その対処方法を解説します。

フォルダ名語尾に半角スペースは存在しない

これはWindows の仕様でフォルダ名の語尾に半角スペースがある状態にしてもフォルダ名確定時に半角スペースが削除(トリム)されます。

作った結果、フォルダ名語尾はトリムされています。

問題はリストと実際のフォルダ名が違う点

例えばCSVなどのリストにフォルダなどのパスが指定されていて、そのパスに対して処理をするスクリプトを構築した際、リストの語尾にスペースが入力されていると、エラーになります。

リストに準じてスクリプトが実行されているので、もし作ったフォルダに対してcdコマンド、Copy-ItemやMove-Itemなどのコマンド実行するときに半角ありのパスで実行するとエラーが発生します

Set-Locatio:An object at the specified path D:\sample\abc does not exist.

語尾に半角ありで実行するとフォルダ名が存在しないのでエラーとなる。

対処方法

フォルダを扱うすべての部分に対してフォルダ名語尾のスペースを消す作業(トリム)をしてあげれば問題が解決します。

TrimEndを使う

cd 'abc '.trimend()

TrimEndは文字列最後のスペースを削除します。

フォルダを指定するときにTrimEndを着けた状態で実行すれば、リストと実際のフォルダ名に差があっても正常に処理できます。