本帖最后由 WHY 于 2020-5-28 19:13 编辑
也可以用 Shell.Application 组件方法,但要分两个步骤,两个脚本
Test1.ps1- $srcDir = 'E:\Test\html'; #源文件夹路径
- $objShell = New-Object -Com 'Shell.Application';
-
- dir $srcDir -Include *.html, *.htm -Recurse | ?{$_ -is [IO.FileInfo]} | forEach{
- $zipFile = $_.DirectoryName + '\' + $_.BaseName + '.zip';
- [IO.File]::WriteAllText( $zipFile, 'PK' + [char]5 + [char]6 + (''+[char]0)*18 ); #写入zip头标记
- $objItem = $objShell.NameSpace($_.DirectoryName).ParseName($_.Name);
- $objShell.NameSpace($zipFile).CopyHere($objItem); #压缩
- }
-
- echo 'Done';
- [Console]::ReadLine()
复制代码 Test2.ps1- $srcDir = 'E:\Test\html'; #源文件夹路径
-
- dir $srcDir -Include *.html, *.htm -Recurse | ?{$_ -is [IO.FileInfo]} | forEach{
- $zipFile = $_.DirectoryName + '\' + $_.BaseName + '.zip';
- if( ![IO.File]::Exists($zipFile) ){ continue;}
- $dt1 = $_.CreationTime.ToString('yyyy-MM-dd HH:mm:ss'); #源文件创建日期
- $dt2 = $_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss'); #源文件修改日期
- $dt3 = $_.LastAccessTime.ToString('yyyy-MM-dd HH:mm:ss'); #源文件访问日期
- del -Literal $_.FullName -Force; #删除
- $item = get-Item -Literal $zipFile;
- $item.CreationTime = $dt1; #zip文件创建日期
- $item.LastWriteTime = $dt2; #zip文件修改日期
- $item.LastAccessTime = $dt3; #zip文件访问日期
- }
-
- echo 'Done';
- [Console]::ReadLine()
复制代码
|