本文目录导读:

- Windows (批处理 .bat / CMD)
- Windows (PowerShell)
- macOS / Linux (Bash Shell)
- macOS (AppleScript) - 用于 Finder 图形界面
- 快捷键操作(无需脚本)
在 Windows 和 macOS 中,可以通过脚本(批处理、PowerShell、Shell)来隐藏或显示文件,核心原理是修改文件的隐藏属性或利用点文件(macOS/Linux)的命名规则。
以下是针对不同系统的具体脚本方法:
Windows (批处理 .bat / CMD)
在 Windows 中,隐藏文件主要通过 attrib 命令实现。
脚本:toggle_hide.bat
@echo off
chcp 65001 >nul文件隐藏/显示切换器
:: 获取要隐藏的文件路径(拖拽文件到脚本上)
set "target=%~1"
if "%target%"=="" (
echo 请将文件或文件夹拖拽到此脚本上。
pause
exit /b
)
:: 检查当前文件是否已隐藏
attrib "%target%" | find " H " >nul
if %errorlevel% equ 0 (
:: 如果已隐藏,则取消隐藏
attrib -h -s "%target%"
echo 已取消隐藏:%target%
) else (
:: 如果未隐藏,则隐藏(加上系统属性,防止误删)
attrib +h +s "%target%"
echo 已隐藏(包括系统隐藏属性):%target%
)
pause
- 使用方法:将
.bat文件保存后,直接拖拽你想要隐藏/显示的文件或文件夹到这个.bat文件图标上。 +s参数:加上系统属性(System),可以让文件在“显示隐藏文件”的默认状态下也不可见,需要勾选“显示受保护的操作系统文件”才能看到,更安全。
Windows (PowerShell)
PowerShell 功能更强大,支持右键菜单集成或更复杂的逻辑。
脚本:Hide-Show-File.ps1
param(
[Parameter(Mandatory=$true)]
[string]$Path
)
# 验证路径是否存在
if (-not (Test-Path $Path)) {
Write-Error "路径不存在: $Path"
exit 1
}
$item = Get-Item $Path
# 检查隐藏属性
if ($item.Attributes -band [System.IO.FileAttributes]::Hidden) {
# 如果已隐藏,则移除隐藏和系统属性
$newAttrs = $item.Attributes -band -bnot ([System.IO.FileAttributes]::Hidden -bor [System.IO.FileAttributes]::System)
Set-ItemProperty -Path $Path -Name Attributes -Value $newAttrs
Write-Host "已取消隐藏: $Path" -ForegroundColor Green
} else {
# 如果未隐藏,则加上隐藏和系统属性
$newAttrs = $item.Attributes -bor ([System.IO.FileAttributes]::Hidden -bor [System.IO.FileAttributes]::System)
Set-ItemProperty -Path $Path -Name Attributes -Value $newAttrs
Write-Host "已隐藏: $Path" -ForegroundColor Yellow
}
- 使用方法:打开 PowerShell,执行
.\Hide-Show-File.ps1 "C:\path\to\your\file.txt"。 - 权限:如果执行报错,先运行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser允许执行本地脚本。
macOS / Linux (Bash Shell)
在 macOS 和 Linux 中,隐藏文件的标准方法是文件名以 开头(.hiddenfile)。
脚本:toggle_hide.sh
#!/bin/bash
target="$1"
if [ -z "$target" ]; then
echo "请提供文件路径"
echo "用法: ./toggle_hide.sh <文件路径>"
exit 1
fi
if [ ! -e "$target" ]; then
echo "文件不存在"
exit 1
fi
filename=$(basename "$target")
dirpath=$(dirname "$target")
# 检查文件名是否以 . 开头
if [[ "$filename" == .* ]]; then
# 已隐藏 -> 显示:去掉点号
newname="${filename:1}"
echo "已显示: $target -> $dirpath/$newname"
else
# 未隐藏 -> 隐藏:加上点号
newname=".$filename"
echo "已隐藏: $target -> $dirpath/$newname"
fi
# 实际执行重命名(移动操作)
mv "$target" "$dirpath/$newname"
- 使用方法:
- 保存为
toggle_hide.sh,在终端执行chmod +x toggle_hide.sh赋予执行权限。 - 运行
./toggle_hide.sh myfile.txt。
- 保存为
- 注意:这个脚本通过重命名来实现隐藏/显示,如果文件已被打开或被系统占用,可能无法重命名。
macOS (AppleScript) - 用于 Finder 图形界面
如果你希望在 Finder 中通过右键服务快速切换,可以使用 Automator 或 AppleScript。
AppleScript 片段:
tell application "Finder"
set selectedFiles to selection
if selectedFiles is not {} then
repeat with f in selectedFiles
set filePath to (POSIX path of f)
set hiddenStatus to (do shell script "ls -O " & quoted form of filePath & " | awk '{print $5}'")
if hiddenStatus contains "hidden" then
-- 取消隐藏
do shell script "chflags nohidden " & quoted form of filePath
else
-- 隐藏
do shell script "chflags hidden " & quoted form of filePath
end if
end repeat
end if
end tell
- macOS 专用命令:核心是
chflags hidden(隐藏)和chflags nohidden(取消隐藏),即使文件名没有点号,也可以隐藏文件。 - 快速使用:将此脚本保存为
.app或通过 Automator 创建“快速操作”,然后绑定快捷键或右键菜单。
快捷键操作(无需脚本)
在大多数文件管理器中,你也可以通过快捷键快速切换“显示隐藏文件”的视图:
- Windows 文件资源管理器:点击菜单栏
查看-> 勾选/取消勾选隐藏的项目。 - macOS Finder:按
Cmd + Shift + .(点号)即可显示/隐藏所有 开头的文件。 - Linux (Nautilus):按
Ctrl + H切换显示隐藏文件。
如果你需要的是在关闭“显示隐藏文件”选项后,别人也看不到,则必须使用 attrib +h +s(Windows)或 chflags hidden(macOS)以及修改文件权限,单纯的改文件名 很容易被发现。
请根据你的操作系统选择对应的方法,如果你有具体的使用场景(比如批量处理、隐藏某个文件夹),欢迎告诉我,我可以为你定制更详细的脚本。