擦盤子
整理多個硬盤,看那些以TB為單位的電子書們,想起已死的國學數典讀書園地,那些pdg的加密解密鎖機器碼⋯⋯回顧起來,還可莞爾。超星盜版,再被以學術為公器的理由拖庫,誰錯了?反正今天流布的電子書,保守估計,半數以上都來自那些年那些人⋯⋯
今時所需,雖非唾手,也都可得,所以,
先去掉一頁一頁的書
Get-ChildItem -Path ‘D:' -Recurse -Filter *.pdg -ErrorAction SilentlyContinue | Remove-Item -Force -ErrorAction SilentlyContinue
再去重複
获取所有文件
$allFiles = Get-ChildItem -Path $rootPath -Recurse -File -ErrorAction SilentlyContinue
文件总数
$totalFiles = $allFiles.Count
$currentFileIndex = 0
计算哈希并分组,显示进度
$files = $allFiles | ForEach-Object {
$currentFileIndex++
$file = $_
# 显示进度
Write-Progress -Activity “Calculating file hashes” -Status “$currentFileIndex of $totalFiles” -PercentComplete (($currentFileIndex / $totalFiles) * 100)
try {
# 尝试获取文件的哈希值
$hash = Get-FileHash $file.FullName -ErrorAction Stop
return [PSCustomObject]@{
Path = $file.FullName
Hash = $hash.Hash
}
} catch {
Write-Warning “Unable to process file $($file.FullName): $_”
}
} | Group-Object -Property Hash
处理重复文件
foreach ($group in $files) {
if ($group.Count -gt 1) {
# 跳过分组中的第一个文件(保留一份副本),删除其他所有重复文件
$group.Group | Select-Object -Skip 1 | ForEach-Object {
Remove-Item $_.Path -Force -ErrorAction SilentlyContinue
Write-Host “Removed duplicate file: $($_.Path)”
}
}
}
完成
Write-Progress -Activity “Calculating file hashes” -Completed
Write-Host “Duplicate file removal process completed.”
8萬多個文件⋯⋯刪除空文件夾
定义要检查的根目录
$rootPath = ‘D:'
递归函数,删除所有空文件夹
function Remove-EmptyDirectories {
param (
[String]$Path
)
# 获取当前路径下的所有子目录
$directories = Get-ChildItem -Path $Path -Directory -Force -ErrorAction SilentlyContinue
# 对每个子目录递归调用此函数
foreach ($directory in $directories) {
Remove-EmptyDirectories -Path $directory.FullName
}
# 再次检查当前目录下是否有子目录或文件,如果没有,则删除当前目录
$items = Get-ChildItem -Path $Path -Force -ErrorAction SilentlyContinue
if ($items.Count -eq 0) {
Remove-Item -Path $Path -Force -ErrorAction SilentlyContinue
Write-Host “Deleted empty directory: $Path”
}
}
开始从根目录删除空文件夹
Remove-EmptyDirectories -Path $rootPath
Write-Host “Completed removing empty directories.”
分類:# 定义源路径$sourcePath = ‘D:'# 定义目标文件夹的基本路径$destinationBasePath = ‘D:\SortedFiles’# 定义文件类型和目标文件夹名的映射$fileTypeFolders = @{ ‘Images’ = @(’.jpg’, ‘.jpeg’, ‘.png’, ‘.gif’, ‘.bmp’, ‘.tif’, ‘.tiff’) ‘Videos’ = @(’.mp4’, ‘.avi’, ‘.mov’, ‘.wmv’, ‘.flv’, ‘.mkv’) ‘Documents’ = @(’.doc’, ‘.docx’, ‘.ppt’, ‘.pptx’, ‘.xls’, ‘.xlsx’, ‘.pdf’, ‘.txt’) ‘Audio’ = @(’.mp3’, ‘.wav’, ‘.aac’, ‘.flac’, ‘.m4a’, ‘.wma’) ‘Others’ = @(’.*’)}# 遍历文件类型,为每种类型创建目标文件夹并移动文件foreach ($folder in $fileTypeFolders.Keys) { $filePatterns = $fileTypeFolders[$folder] $destinationPath = Join-Path -Path $destinationBasePath -ChildPath $folder # 如果目标文件夹不存在,则创建 if (-not (Test-Path -Path $destinationPath)) { New-Item -ItemType Directory -Path $destinationPath | Out-Null } # 获取匹配文件的总数 $totalFiles = (Get-ChildItem -Path $sourcePath -Recurse -File -Include $filePatterns -ErrorAction SilentlyContinue).Count $processedFiles = 0 foreach ($pattern in $filePatterns) { Get-ChildItem -Path $sourcePath -Recurse -File -Include $pattern -ErrorAction SilentlyContinue | ForEach-Object { $processedFiles++ $percentComplete = ($processedFiles / $totalFiles) * 100 # 更新进度条 Write-Progress -Activity “Moving $folder files” -Status “$processedFiles of $totalFiles processed” -PercentComplete $percentComplete $destinationFilePath = Join-Path -Path $destinationPath -ChildPath $_.Name $newFilePath = $destinationFilePath # 如果目标文件夹中已存在同名文件,则重命名新文件 $counter = 1 while (Test-Path -Path $newFilePath) { $fileExtension = [System.IO.Path]::GetExtension($destinationFilePath) $fileNameWithoutExtension = [System.IO.Path]::GetFileNameWithoutExtension($destinationFilePath) $newFileName = “${fileNameWithoutExtension}_$counter$fileExtension” $newFilePath = Join-Path -Path $destinationPath -ChildPath $newFileName $counter++ } # 使用-LiteralPath参数移动文件,以正确处理包含特殊字符的文件名 Move-Item -LiteralPath $_.FullName -Destination $newFilePath -Force } } # 完成当前文件类型的处理后,清除进度条 Write-Progress -Activity “Moving $folder files” -Completed}Write-Host “All files have been sorted into folders based on their type.“最後,合併常用書到MAC系統備份盤,上課可以隨時調取了。其實真正日用的書,大多還是在阿里雲盤⋯⋯百度幾個雲盤,因為百度的德性,早已多廢棄了。下載Windows 11 Insider Preview Build 26058,下載Rufus重裝win系統,安裝介面爽利了很多。irm https://massgrave.dev/get | iex這個確實不怎麼合適,但⋯⋯實在懶得用學校正版了。整理幾個小U盤,格式化為exFAT。睡。