ExcelやCSVなどのリストからフォルダを作成したり、そのフォルダにファイルの移動、コピーする事例があります。
その際にリストの最後に半角スペースが存在し、エラーが発生しスクリプトが止まってしまいます。
その対処方法を解説します。
フォルダ名語尾に半角スペースは存在しない
これは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を着けた状態で実行すれば、リストと実際のフォルダ名に差があっても正常に処理できます。