如何用脚本隐藏/显示文件?

wen 实用脚本 2

本文目录导读:

如何用脚本隐藏/显示文件?

  1. Windows (批处理 .bat / CMD)
  2. Windows (PowerShell)
  3. macOS / Linux (Bash Shell)
  4. macOS (AppleScript) - 用于 Finder 图形界面
  5. 快捷键操作(无需脚本)

在 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"
  • 使用方法
    1. 保存为 toggle_hide.sh,在终端执行 chmod +x toggle_hide.sh 赋予执行权限。
    2. 运行 ./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)以及修改文件权限,单纯的改文件名 很容易被发现。


请根据你的操作系统选择对应的方法,如果你有具体的使用场景(比如批量处理、隐藏某个文件夹),欢迎告诉我,我可以为你定制更详细的脚本。

抱歉,评论功能暂时关闭!