【问题标题】:Not able to find .7z archives across multiple directories无法跨多个目录找到 .7z 档案
【发布时间】:2018-08-08 08:19:54
【问题描述】:

我正在尝试构建一个简单的脚本,在其中根据用户在输入时提供的密码测试多个目录中的所有 .7z 档案。目前,如果这些档案与脚本位于同一目录中,脚本只能处理档案,否则无论密码是否正确,我都会得到以下输出:

==================================================== =============== 7-Zip [64] 9.20 版权所有 (c) 1999-2010 Igor Pavlov 2010-11-18 错误: 找不到存档 目录:\Documents\Project\FOLDER1 模式 LastWriteTime 长度 名称 ---- ------------- ------ ---- -a---- 06/08/2018 16:30 223 Alpha.7z 密码错误! ==================================================== ===============

请检查我的代码并告诉我哪里出错了。

$CaseDirectory = Read-Host 'Please input Case directory'
$Password = Read-Host 'Please input Case password'

$7ZipPath = "C:\Program Files\7-Zip\7z.exe"
$Files = Get-ChildItem -Path $CaseDirectory -Recurse -Force -Filter *.7z

$Output = Foreach ($File in $Files)
{
    & $7ZipPath "t" $File "-p$Password"
    if (-not $?)
    {  
       Write-Output $File "Wrong Password!"
    } else {
        Write-Output $File "Password Match"
    }
    Write-Output "================================================================"


} 
$Output | findstr /r /v "^$" | Out-File -FilePath $CaseDirectory\PasswordTest_Output.txt 

pause

【问题讨论】:

  • 外部命令使用$LASTEXITCODE,而不是$?
  • 这对我来说似乎不是重复的@AnsgarWiechers
  • @simon 将行: (& $7ZipPath "t" $File "-p$Password") 更改为 (& $7ZipPath "t" $File.FullName "-p$Password") 到利用 Get-ChildItem 返回的文件的完整路径
  • @TobyU 很好。

标签: powershell 7zip


【解决方案1】:

改变

& $7ZipPath "t" $File "-p$Password"

进入

& $7ZipPath "t" $File.FullName "-p$Password"

使用 Get-ChildItem 给出的文件完整路径

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2017-09-05
    相关资源
    最近更新 更多