本文目录导读:

是的,脚本可以自动整理桌面文件!通过编写简单的脚本(如 Python、Bash、PowerShell),你可以根据文件类型、名称、日期等规则,将桌面上的文件自动移动到指定的文件夹中。
下面给出几种常见系统的脚本示例,你可以根据自己的需求修改使用。
Windows (使用 PowerShell)
这个脚本会按照文件扩展名(后缀),将桌面文件移动到对应的文件夹里。
# 定义桌面路径和整理目标文件夹
$desktopPath = [Environment]::GetFolderPath('Desktop')
$destinationRoot = "$desktopPath\整理后" # 在桌面上创建一个叫“整理后”的文件夹
# 确保目标根文件夹存在
if (-not (Test-Path $destinationRoot)) {
New-Item -ItemType Directory -Path $destinationRoot | Out-Null
}
# 获取桌面上所有文件(不包括文件夹)
Get-ChildItem -Path $desktopPath -File | ForEach-Object {
$file = $_
$extension = $file.Extension.ToLower()
# 跳过脚本本身(如果不想移动自己)
if ($file.Name -eq "Organize-Desktop.ps1") { return }
# 根据扩展名定义目标子文件夹
$subFolder = switch ($extension) {
'.jpg' { '图片' }
'.jpeg' { '图片' }
'.png' { '图片' }
'.gif' { '图片' }
'.bmp' { '图片' }
'.doc' { '文档' }
'.docx' { '文档' }
'.xls' { '文档' }
'.xlsx' { '文档' }
'.ppt' { '文档' }
'.pptx' { '文档' }
'.pdf' { '文档' }
'.txt' { '文本' }
'.zip' { '压缩包' }
'.rar' { '压缩包' }
'.7z' { '压缩包' }
'.exe' { '程序' }
'.msi' { '程序' }
default { '其他文件' } # 不认识的扩展名放这里
}
# 构建目标文件夹路径
$destinationDir = Join-Path -Path $destinationRoot -ChildPath $subFolder
if (-not (Test-Path $destinationDir)) {
New-Item -ItemType Directory -Path $destinationDir | Out-Null
}
# 移动文件(如果有重名会添加数字后缀)
$destinationFile = Join-Path -Path $destinationDir -ChildPath $file.Name
$counter = 1
while (Test-Path $destinationFile) {
$newName = "$($file.BaseName)_$counter$($file.Extension)"
$destinationFile = Join-Path -Path $destinationDir -ChildPath $newName
$counter++
}
Move-Item -Path $file.FullName -Destination $destinationFile -WhatIf # 去掉 -WhatIf 来真正执行
}
使用方法:
- 打开记事本,粘贴上述代码。
- 保存为
Organize-Desktop.ps1文件(注意扩展名是.ps1)。 - 右键点击该文件 -> “使用 PowerShell 运行”。
- 小提示: 代码中有一行
-WhatIf参数,它会模拟运行并显示将要移动的文件,但不会真的移动,你可以先试运行一次看看效果,确认没问题后删掉-WhatIf再正式运行。
- 小提示: 代码中有一行
macOS / Linux (使用 Bash)
这个脚本逻辑类似,会根据文件类型创建对应的文件夹并移动文件。
#!/bin/bash
# 定义桌面路径
DESKTOP="$HOME/Desktop"
# 定义整理后的根文件夹(在桌面上创建一个叫“整理后”的文件夹)
DEST="$DESKTOP/整理后"
# 创建根文件夹(如果不存在)
mkdir -p "$DEST"
# 遍历桌面上的所有文件(不包括文件夹)
for file in "$DESKTOP"/*; do
# 跳过脚本本身和目录
[ -f "$file" ] || continue
filename=$(basename "$file")
[ "$filename" == "organize_desktop.sh" ] && continue
# 获取文件扩展名(转为小写)
extension="${filename##*.}"
extension_lower=$(echo "$extension" | tr '[:upper:]' '[:lower:]')
# 根据扩展名定义目标子文件夹
case "$extension_lower" in
jpg|jpeg|png|gif|bmp) subfolder="图片" ;;
doc|docx|xls|xlsx|ppt|pptx|pdf|txt) subfolder="文档" ;;
zip|rar|7z|gz|bz2) subfolder="压缩包" ;;
dmg|app) subfolder="程序" ;;
mp3|wav|flac|aac) subfolder="音乐" ;;
mp4|avi|mov|mkv) subfolder="视频" ;;
*) subfolder="其他文件" ;;
esac
# 创建子文件夹(如果不存在)
target_dir="$DEST/$subfolder"
mkdir -p "$target_dir"
# 处理重名文件(添加数字后缀)
target_file="$target_dir/$filename"
counter=1
while [ -f "$target_file" ]; do
base="${filename%.*}"
target_file="$target_dir/${base}_$counter.$extension"
((counter++))
done
# 移动文件
mv "$file" "$target_file"
echo "移动了: $filename -> $subfolder/"
done
echo "桌面整理完成!"
使用方法:
- 打开“文本编辑”或终端中的
nano/vim,粘贴代码。 - 保存为
organize_desktop.sh到桌面。 - 打开终端(Terminal),输入以下命令赋予执行权限:
chmod +x ~/Desktop/organize_desktop.sh
- 运行脚本:
~/Desktop/organize_desktop.sh
更高级的灵感
除了按扩展名整理,你还可以考虑:
- 按文件修改日期: 创建
2025-04、2025-05这样的月份文件夹,将文件分月存放。 - 按文件尺寸: 将大于 100MB 的文件移动到“大文件”文件夹。
- 按关键词: 如果文件名包含“项目”、“报告”等词,移动到对应文件夹。
- 使用 Python (跨平台): Python 的
os和shutil库可以写更灵活的脚本,尤其适合逻辑复杂的情况。
重要提醒(非常重要!)
- 备份你的文件! 在第一次运行任何自动整理脚本前,请务必备份桌面上的文件,或者先把文件复制一份到其他地方进行测试。
- 先模拟运行! 使用 PowerShell 的
-WhatIf参数或 Bash 中先用echo代替mv,确保脚本的行为符合你的预期,而不会误删或错误移动文件。 - 注意程序快捷方式: 脚本默认只移动文件(
-File),不会移动文件夹,如果你桌面有程序的快捷方式(.lnk或.app文件),可以根据需要调整规则。
希望这些示例能帮你摆脱杂乱桌面!如果需要定制更具体的规则(比如按日期或关键词),可以告诉我,我可以帮你调整脚本。