powershell中的IF语法很难对付

时间:2014-04-01 13:39:07

标签: powershell

你们可以解决吗?我很确定这只是一个小的语法错误,因为我是菜鸟...无论输入什么($ name),我总是得到“错误的文件”。

$name = "DE123456.zip"
if ($name -contains "DE") 
{
  Get-ChildItem C:\test\$name | 
   % {
     $to  = $_.basename.length - 2
     $path = $_.basename.substring( 0, $to)
     & "C:\test\7z.exe" "x" "-y" $_.fullname "-oC:\test\$path"
     }
  }
ELSE
{
"Wrong file"
}

2 个答案:

答案 0 :(得分:2)

在脚本运行之前,会发出语法错误。

您的问题是-contains作为运算符仅检查数组中是否存在值。您希望字符串上的.Contains方法代替:

if ($name.Contains('DE')) ...

答案 1 :(得分:0)

更改

if ($name -contains "DE") 

if ($name -match "DE") 

get-help about_comparison_operators

了解其中的差异。