无忧启动论坛
标题:
一个全盘compact压缩的powershell脚本
[打印本页]
作者:
shuini
时间:
2023-12-25 16:21
标题:
一个全盘compact压缩的powershell脚本
习惯用dism命令加上参数/compact:LZX来安装系统,但是系统并不会将全部文件都以最高压缩比来压缩文件,所以最后全部设置完毕后只能强制以最高压缩比再压缩一次。既然是强制,那么先前已经是LZX压缩过的文件又被重新压缩了一次。而且由于windows里面硬链接文件众多,这就相当于有些文件被解压缩了多次。再加上有些文件大小小于磁盘的分配单元大小,那么即使压缩了也不会减少占用空间。这些因素都使得电脑做了不少无用功。
所以琢磨了一个脚本,用着还行,电脑少做了不少有害无益的无用功,对SSD也是一种减负。
将横线下面的代码保存为LZX.ps1运行。
-----------------------------------------------------------------------
$ErrorActionPreference = "Stop"
function Compress-Files {
param(
[Parameter(Mandatory = $true)]
[string]$Path,
[Parameter()]
[int]$FileSize
)
$directories = @("Program Files", "Program Files (x86)", "Users", "ProgramData", "Windows")
foreach ($directory in $directories) {
Process-Directory "$Path\$directory" -FileSize $FileSize
}
Write-Host "文件压缩完成。"
Start-Sleep -Seconds 3
}
function Process-Directory {
param(
[Parameter(Mandatory = $true)]
[string]$DirectoryPath,
[Parameter()]
[int]$FileSize
)
Write-Host "处理目录:$DirectoryPath"
Get-ChildItem -Recurse -File $DirectoryPath | ForEach-Object {
$sourceFile = $_.FullName
if ($FileSize -and $_.Length -gt $FileSize) {
if (!(Compact "$sourceFile" | Select-String -Pattern "1 l")) {
Compress-File "$sourceFile"
}
} elseif (!$FileSize) {
if (!(Compact "$sourceFile" | Select-String -Pattern "1 l")) {
Compress-File "$sourceFile"
}
}
}
}
function Compress-File {
param(
[Parameter(Mandatory = $true)]
[string]$FilePath
)
Write-Host "正在使用 LZX 压缩文件:$FilePath"
Compact /C /F /A /I /EXE:LZX $FilePath
if ($?) {
Write-Host "文件压缩完成。"
} else {
Write-Host "文件压缩失败。"
# 可以添加日志记录功能,将失败的文件记录到日志文件中
}
}
$ImagePath = Read-Host "请输入要压缩的盘符(带冒号)"
$FileSize = Read-Host "请输入要筛选的文件最小大小(单位字节)"
if ([string]::IsNullOrWhiteSpace($ImagePath)) {
Write-Host "输入为空,请重新输入。"
} elseif (![int]::TryParse($FileSize, [ref]$null) -or $FileSize -lt 0) {
Write-Host "文件大小不正确,请重新输入一个大于等于零的数字。"
} else {
Compress-Files -Path $ImagePath -FileSize $FileSize
}
作者:
zsyloveyp
时间:
2023-12-25 16:36
感谢分享
作者:
yyz2191958
时间:
2023-12-25 17:36
谢谢分享
作者:
shuini
时间:
2023-12-25 18:00
win8要添加compact支持包才能用
作者:
2012andyle113
时间:
2023-12-25 18:14
看起来省点空间而已,反复压缩减负就未必了
作者:
yc2428
时间:
2023-12-25 20:20
谢谢分享
作者:
nathan6498
时间:
2023-12-25 21:14
谢谢分享
作者:
oh312
时间:
2023-12-25 22:54
赞,谢谢分享。
作者:
AcidBurn
时间:
2023-12-26 05:00
感谢分享
作者:
oh312
时间:
2023-12-26 06:45
赞,谢谢分享。
作者:
车厘子
时间:
2023-12-26 14:30
感谢分享
作者:
nathan6498
时间:
2023-12-26 17:51
谢谢分享
作者:
sjh87
时间:
2023-12-28 15:35
感谢分享
作者:
AcidBurn
时间:
2023-12-29 03:32
感谢分享
作者:
2267981144
时间:
2024-1-15 16:31
多谢提供分享!
作者:
jlshnlhj
时间:
2024-1-18 10:28
本帖最后由 jlshnlhj 于 2024-9-5 18:13 编辑
支持哪些Windows版本?Win10,Win11?试了一下,效果不错。
作者:
无犹启动
时间:
2024-1-28 15:22
谢谢分享
作者:
abcrazy
时间:
2024-1-28 19:58
谢谢分享
作者:
无犹启动
时间:
2024-1-29 11:06
谢谢分享
作者:
tanchenglong
时间:
2024-1-29 11:16
留名,看个标题就走了
作者:
tanchenglong
时间:
2024-1-29 13:05
貌似还不够十五字,我只是来打酱油的
作者:
JayeDieyan
时间:
2024-1-29 13:20
compact压缩相比refsutil 的lz4/zstd压缩好像稍逊了些
作者:
xman00
时间:
2024-4-5 12:16
感谢分享,很棒。
咨询下是对盘符下所有类型的文件进行压缩么?通过窗口我看到了exe和dll,其它太快看不清,想问明白,谢谢。
作者:
2012飘水
时间:
2024-4-6 21:23
学习学习,顶一下
作者:
nbhai2018
时间:
2024-7-26 15:39
好用,谢谢分享!~~~
作者:
账号没有注册b
时间:
2024-8-6 17:55
赞一个!
作者:
j4tan
时间:
2024-8-26 19:10
不错支持一下,谢谢分享
作者:
sevenyu
时间:
2024-8-27 09:04
11可用吗?试了下,一闪就没了?
作者:
jlshnlhj
时间:
2024-9-5 18:17
sevenyu 发表于 2024-8-27 09:04
11可用吗?试了下,一闪就没了?
在支持PowerShell的pe下,试试。
作者:
旭东
时间:
2024-9-5 21:13
感谢分享了
作者:
beizi1754
时间:
2024-9-5 21:23
这个有点技术含量了
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3