【问题标题】:Powershell archive multiple directories in single zip archivePowershell 在单个 zip 存档中存档多个目录
【发布时间】:2018-03-30 18:30:42
【问题描述】:

UPD1 - 我修改了我的问题以使其不那么含糊

我是 Powershell 的新手,需要有人建议。 我有一个需要压缩的目录,例如:

在 C:\inetpub\wwwroot\STAGETEST\ App_Config 资源 垃圾箱

C:\inetpub\wwwroot\STAGETEST\ 中还有另外一堆目录,我只需要压缩 App_Config、Resources、bin - 包含所有子目录和文件,保持结构。 为此,我有一个脚本:

$SOURCEDIR = "C:\inetpub\wwwroot\STAGETEST\" 
$SOURCEFOLDERS = "App_Config", "Resources", "bin"
Get-ChildItem -Path $SOURCEDIR -Include "$SOURCEFOLDERS" -Directory
$SOURCE = Get-ChildItem -Path $SOURCEDIR -Directory
Add-Type -assembly "system.io.compression.filesystem"
Foreach ($s in $SOURCE)
{
$DESTINATIONDIR = Join-path -path $SOURCEDIR -ChildPath "$($s.name).zip"

#检查存档是否已经存在并删除

If(Test-path $DESTINATIONDIR) {Remove-item $DESTINATIONDIR}
[io.compression.zipfile]::CreateFromDirectory($s.fullname, $DESTINATIONDIR)

不幸的是,我无法理解,如何实施正确的 Get-ChildItem -include 来获取所有必要的多个目录? 或许,还有其他方法吗?

【问题讨论】:

  • 当双引号 var 不会被扩展时,要么使用单引号,要么省略它们。但是AFAIK包含选项仅指扩展名而不是文件夹。您想在存档名称中包含时间戳还是设置文件日期/时间?
  • @LotPings - 您想在存档名称中包含时间戳还是设置文件日期/时间?是的,这是正确的 - 这是我脚本中的第二个问题 :)
  • @LotPings 我希望在存档名称中包含时间戳
  • $dtstamp = (Get-Date).ToString("yyyyMMdd_HHmmss") 在字符串中指定您想要的格式。
  • @LotPings 谢谢!

标签: powershell filter timestamp


【解决方案1】:

根据Get-ChildItem帮助:

包括 - 以字符串数组的形式指定此 cmdlet 在操作中包含的一个或多个项目。此参数的值限定了 Path 参数。输入路径元素或模式,例如 *.txt。允许使用通配符。 Include 参数只有在命令包含 Recurse 参数或路径指向某个目录的内容时才有效 目录,例如 C:\Windows*,其中通配符指定 C:\Windows 目录的内容。

所以,你需要一个数组和 -Recurse 参数

$SOURCEFOLDERS = @("App_Config", "Resources", "bin")
$SOURCE = Get-ChildItem -Path $SOURCEDIR -Include $SOURCEFOLDERS -Directory -Recurse

【讨论】:

  • 好的,数组字符串是对的,但除了 3 个需要的目录之外,它还返回一堆目录,这些目录嵌套在这个或其他不必要的文件夹中。 prnt.sc/iygwei 有没有办法只在当前文件夹中执行请求( $SOURCEDIR = "C:\inetpub\wwwroot\STAGETEST\" )?
  • 或者:Get-ChildItem -Path $SOURCEDIR -Directory|Where-Object {$_.FullName -match "App_Config|Resources|bin"}|Select-Object -ExpandProperty FullName
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
相关资源
最近更新 更多