错误从单独目录中的批处理文件调用powershell脚本

时间:2013-05-21 19:16:49

标签: powershell batch-file

我有以下.ps1用于解压缩zip文件...

param([string]$path)
$shell=new-object -com shell.application
$Location=$shell.namespace($path)
$ZipFiles = get-childitem *.zip

get-childitem $path -include *.xml -recurse | foreach ($_) {remove-item $_.fullname}

foreach ($ZipFile in $ZipFiles)
{
    $ZipFile.fullname | out-default
    $ZipFolder = $shell.namespace($ZipFile.fullname)
    $Location.Copyhere($ZipFolder.items())
}

和以下run.bat文件,用于设置参数并调用.ps1

 powershell -command "C:\Users\eric\unzipFile\unzip3.ps1 -path \"C:\Users\eric\unzipFile\""

如果两者都在同一目录中,没有错误,但是如果我将run.bat移动到另一个目录,我会得到以下内容......

You cannot call a method on a null-valued expression.
At C:\Users\eric\unzipFile\unzip3.ps1:12 char:38
+ $Location.Copyhere($ZipFolder.items <<<< ())
+ CategoryInfo: InvalidOperation: (items:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

1 个答案:

答案 0 :(得分:2)

您没有指定查找zip文件的路径,因此它会查找当前文件夹。改变如下:

$ZipFiles = get-childitem -Path $path -Filter *.zip

其他提示:使用powershell中的-File参数并添加其他参数以便于调用

powershell -file "C:\Users\eric\unzipFile\unzip3.ps1" -path "C:\Users\eric\unzipFile\"