首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerShell:使用压缩存档和开始-作业不能工作

PowerShell:使用压缩存档和开始-作业不能工作
EN

Stack Overflow用户
提问于 2020-03-22 20:19:22
回答 2查看 477关注 0票数 2

我试图使用PowerShell压缩H:\驱动器上的一堆视频文件。但是,由于驱动器相当大,连续运行此操作将需要很长时间。下面是我正在使用的代码的一个简短片段。一些部分已被扣留。

代码语言:javascript
运行
复制
$shows = Get-ChildItem H:\
foreach($show in $shows){
    Start-Job -ArgumentList $show -ScriptBlock {
        param($show)
        $destPath = "$($show.DirectoryName)\$($show.BaseName).zip"
        Compress-Archive -Path $show.FullName -DestinationPath $destPath
    }
}

当我运行Get-作业时,作业在JobStateInfo中显示为已完成,但没有创建.zip。我还运行了一些测试,方法是用$destPath变量的Out替换Compress命令,同时使用Start-Job。

代码语言:javascript
运行
复制
Start-Job -ArgumentList $shows[0] -ScriptBlock {
    param($show)
    $show = [System.IO.FileInfo]$show
    $destPath = "$($show.DirectoryName)\$($show.BaseName).zip"
    $destPath | Out-File "$($show.DirectoryName)\test.txt"
}

创建一个文本文件并显示正确的目标路径。我已经以管理员身份运行了PowerShell,并再次尝试,但这似乎也不起作用。不确定是否重要,但我正在运行Windows 10 (最新的)。

任何帮助都将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-23 01:58:22

由于某种原因,在作业内部,序列化的fileinfo对象没有basename (它是scriptproperty)。如果你有线程作业,那就有效了。

代码语言:javascript
运行
复制
dir | start-job { $input } | receive-job -wait -auto | 
  select name,basename,fullname

Name      basename FullName
----      -------- --------
file1.txt          C:\Users\js\foo\file1.txt
file2.txt          C:\Users\js\foo\file2.txt
file3.txt          C:\Users\js\foo\file3.txt
票数 1
EN

Stack Overflow用户

发布于 2020-03-22 22:38:55

我不确定这是否是您想要的,但我认为您首先需要创建一个归档文件,然后用显示更新该归档文件,所以我创建了zip,名为归档,并通过添加文件进行循环。

代码语言:javascript
运行
复制
$shows = Get-ChildItem H:\


foreach($show in $shows){


        Compress-Archive -Path $show.FullName -Update -DestinationPath "C:\archive"
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60804519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档