我正在使用PS脚本来压缩使用7za的文件夹。 如果我使用-xr选项来排除某些文件,则压缩失败,并显示一条警告,其中要压缩的项目等于0.如果从Power Shell运行(不是脚本),则会出现同样的问题。
如果我从命令行运行相同的命令一切正常。 另外,如果我不使用-xr标志压缩的作品。
PS d:\data> e:\backup\7za a -ye:\backup\data.7z * -xr!*.7z
在PowerShell(!)是一个保留的字符表示不/否定。
PS C:\> $true True PS C:\> !$true False
在CMD(!)内没有特别的意义
在CMD内我可以运行以下,它的工作原理:
7za.exe a -y .\test.7z .\* -xr!*.exe
在PowerShell中,以下给出了一个错误:
.\7za.exe a -y .\test.7z .\* -xr!*.exe <extra lines removed> .exe: WARNING: The system cannot find the file specified.
在PS中,我能够传递一个使用(!)的参数,并用单引号括起来,强制内容被视为文字。
.\7za.exe a -y .\test.7z .\* '-xr!*.exe'
不要试图把$ var放在单引号内,它不会展开。
尝试:
try{ & "e:\backup\7za" a -y "e:\backup\data.7z" * -xr!*.7z }catch{ Write-Error $_; }finally{ Write-Host "check if error and continue"; }
这对我有用。 一条线:
PS> try{ & "e:\backup\7za" a -y "e:\backup\data.7z" * -xr!*.7z; }catch{ Write-Error $_; }finally{ Write-Host "check if error and continue"; }
你在命令前缺less'&' 。 更多信息请访问: https : //social.technet.microsoft.com/wiki/contents/articles/7703.powershell-running-executables.aspx#reCodeBlock ,第5章。