【问题标题】:Creating multiple files using the same script使用同一个脚本创建多个文件
【发布时间】:2019-05-05 06:16:35
【问题描述】:

我有一个 powershell 脚本,它可以归档所有不是 ps1 和 csv 文件的文件,并且它可以工作,但是如果 zip 存档已经存在,我必须在再次运行命令之前复制存档或删除它,否则出现错误,表明该文件已存在。

Get-ChildItem -Path .\* -Exclude *.ps1, *.csv | Compress-Archive -DestinationPath .\NonEssArch.zip -verbose

Add-Type -AssemblyName PresentationFramework

$msgBoxInput =  [System.Windows.MessageBox]::Show('Do you also want to delete these non-essential files?','Attention','YesNo','Info')

switch  ($msgBoxInput) {
  'Yes' {
  del -Path *.* -Exclude *.csv, *.ps1, *.zip
  }
  'No' {
  Exit
  }
}

我希望能够在创建存档后运行脚本,而无需替换现有存档。问题出在“-DestinationPath .\NonEssArch.zip”部分,但我在实现排序编号系统时遇到了麻烦。

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 最简单的方法是给文件名加上时间戳。因为你可以得到你想要的粒度[精确到毫秒],所以不可能有任何文件名冲突。 [grin] 类似 >>> $NewFileName = 'NonEssarch_{0}.zip' -f (Get-Date).ToString('yyyy-MM-dd_HH-mm-ss')
  • 不客气!很高兴能有所帮助... [grin]

标签: powershell


【解决方案1】:

“唯一化”文件名的最简单方法是为其添加时间戳。您可以调整粒度以适应您的情况。如果需要,可以精确到毫秒。 [咧嘴一笑]

这样的……

$NewFileName = 'NonEssArch_{0}.zip' -f (Get-Date).ToString('yyyy-MM-dd_HH-mm-ss')

现在,那会给你...

NonEssArch_2019-05-04_17-12-27.zip

【讨论】: