整理多個硬盤,看那些以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。
睡。
Comments
Post a Comment