- Windows PowerShell 2.0 Part2
571 :名無し~3.EXE[sage]:2011/06/14(火) 15:24:39.19 ID:hlsr0Yqw - ドラッグ&ドロップで処理しようと思って下のサイト見ながらレジストリいじったんですが、、、
http://blogs.wankuma.com/mutaguchi/archive/2006/06/23/31196.aspx 半角でスプリットされた配列を半角スペースで連結して、最後に余計な半角を除去して $oldpath2 = '' foreach($x in $oldpath){ $oldpath2 += $x + ' '; } $oldpath2 = $oldpath2 -replace " $" このoldpath2をtest-pathしてもFailになってしまう。で調べていくうちファイル名に"[]"が使われると失敗することがわかりました。 結局、 $oldpath2 = $oldpath2 -replace "\[", "``[" $oldpath2 = $oldpath2 -replace "\]", "``]" を入れてやるとうまく動作するんですが、\とか`とか使うのはparseのときだけじゃなく、 OSから渡されたファイルパスの文字列であっても、[]に対しては`[, `]としないといけないんでしょーか?
|
- Windows PowerShell 2.0 Part2
572 :名無し~3.EXE[sage]:2011/06/14(火) 15:28:29.65 ID:hlsr0Yqw - 注
ちなみに上のサイトのレジストリ @="\"C:\\Program Files\\Windows PowerShell\\v1.0\\powershell.exe\" -NoLogo \"%1\" %*" は最後ミスってるようです。 %x\" で正常に動くようになりました。 あと、そのサイトのPSスクリプトはスプリットされた文字列を半角スペースでつなぐか、何もせず終了するかで test-pathを使ってますので、[]を含むパスの場合、常に最後に余計な半角スペースを追加してしまうはずです。
|
- Windows PowerShell 2.0 Part2
573 :名無し~3.EXE[sage]:2011/06/14(火) 16:48:42.77 ID:hlsr0Yqw - 誤 %x\"
正 %*\" でした
|
- Windows PowerShell 2.0 Part2
575 :名無し~3.EXE[sage]:2011/06/14(火) 17:52:25.07 ID:hlsr0Yqw - test-pathというのは比較的明確だと思ったので書きましたが他のコマンド(ren-itemとか)でも軒並み駄目です。
ただ、renなんかだと第2引数のdestinationは`[,`]に変換しなくともOKです。変換すると`[ `] の入ったファイルができてしまいます。 あと、[]に関してはまだ引数としてPowerShellに手渡せてるのですが、パスに()が入ると、$argsにすら展開されてないようで、 コマンドラインの処理に移る前に落ちてしまいます。
|
- Windows PowerShell 2.0 Part2
576 :名無し~3.EXE[sage]:2011/06/14(火) 17:56:30.68 ID:hlsr0Yqw - ちょっと紛らわしいので、、、
例えばファイル名[aaa]を[bbb]に変換したい場合 ren-item `[aaa`] [bbb] で正しく変換できるってことです。 ren-item `[aaa`] `[bbb`] とすると、`[bbb`]というファイルができあがってしまうんです
|
- Windows PowerShell 2.0 Part2
577 :名無し~3.EXE[sage]:2011/06/14(火) 19:00:02.80 ID:hlsr0Yqw - >パスに()が入ると、$argsにすら展開されてないようで、
>コマンドラインの処理に移る前に落ちてしまいます。 親ディレクトリを abc(Memories) ファイル名 xyz.jpg をドロップしたときのエラーです。尚、レジストリは @="\"C:\\Program Files\\Windows PowerShell\\v1.0\\powershell.exe\" -NoExit -NoLogo \"%1\" %*"\ として、終了しないようにしています。 用語 'Memories' は、コマンドレット、関数、スクリプト ファイル、または操作可能な プログラムの名前として認識されません。名前が正しく記述されていることを確認し、 パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください 。 発生場所 行:1 文字:80 + E:\Users\nanashi3.exe\Documents\WindowsPowerShell\test.ps1 J:\Pics\abc(Memori es <<<< )\xyz.jpg + CategoryInfo : ObjectNotFound: (Memories:String) []、CommandNotF oundException + FullyQualifiedErrorId : CommandNotFoundException
|