5

PowerShellを使用したアイテムの移動に関する簡単な質問:ファイル名に[または]文字が含まれていると次のスクリプトが機能しない理由を誰かが知っていますか?(例:file1 [VT] .txt

ls j:\ | foreach { 
  $itemName = $_.Name.Replace('.', ' ') 
  $destination = ls | where { $itemName -match $_.Name } | select -First 1 
  if ($destination -ne $null) {       
    mi $_.PSPath $destination.PSPath -Verbose -WhatIf  
  } 
}

たとえば、file1.txtという名前のファイルは移動しますが、 file1[VT].txtという名前のファイルは無視されます。名前にchars[または]が含まれている場合、ファイルへのパスが見つからないと想定しています。何か案は?

4

3 に答える 3

6

-literalpathパラメータを使用するだけmove-item

ls j:\ | foreach { 
  $itemName = $_.Name.Replace('.', ' ') 
  $destination = ls | where { $itemName -match $_.Name } | select -First 1 
  if( $destination -ne $null){       
   mi -literalpath $_.PSPath $destination.PSPath -Verbose -WhatIf  
  } 
}
于 2013-02-13T06:39:23.920 に答える
0

-match演算子を使用すると、探しているパターン(この例では$ _。Name)が正規表現として扱われます。.NET正規表現では、[および]文字は、トークンのグループに対して文字を照合するために使用されます。たとえば、正規表現

{"file1[vt]"} 

文字列「file1v」と「file1t」に一致します。を使用するには

于 2013-02-12T22:40:31.960 に答える