前提・実現したいこと
エスケープが必要な文字を含むファイル名の先頭文字を1文字目としたとき、
1文字目から10文字目と、拡張子を除いた末尾一文字を削除したい。
# 元のファイル名 XXXXXXXXXXAAAAAAAAAAAAAAAAX.txt # リネーム後のファイル名 AAAAAAAAAAAAAAAA.txt
発生している問題
まず、前提として、
Windows上で、ファイル名の置換をしたいファイルをスクリプトへドラッグ・アンド・ドロップするような使い方を想定しています。
そのために、以下のURLのようにに、バッチをかませてからPowerShellスクリプトを呼び出そうと考えています。
https://qiita.com/harry0000/items/e8c35b8e53cdae513d9d
バッチから呼ばれたPowerShellを、
例えば、先頭の1文字目から10文字目を削除するために以下のようなスクリプトとしたとき、
$argにエスケープが必要な文字を含んでいた場合、何もせず終了してしまいます。
powershell
1foreach ($arg in $args) { 2 Get-ChildItem $arg| Rename-Item -NewName { $_.Name -replace '^..........','' } 3} 4
ドラッグ・アンド・ドロップしてきたファイル名にエスケープが必要な文字を含んでいた場合でも、きちんと処理が行えるようにするためには、どのような方法があるでしょうか。
補足情報(FW/ツールのバージョンなど)
PowerShellのバージョンは5.0です。
回答1件
あなたの回答
tips
プレビュー