
Windows 不使用点文件隐藏文件的约定。但是,许多 Windows 应用程序(主要是开源/跨平台)使用符合此约定的文件和文件夹。如何让 Windows 资源管理器自动隐藏这些点文件?
答案1
ATTRIB +H /s /d C:\.*
是隐藏任何内容的命令,包括以点开头的目录
这不会列出文件(如下所示),但会命中它可以访问的每个文件,并应用隐藏属性。
完成后,您可以确保文件夹选项设置为隐藏隐藏文件。点击开始,输入folder options
并按Enter。单击看法选项卡,然后选择不显示隐藏的文件、文件夹或驱动器在下面文件和文件夹\隐藏文件和文件夹。 打申请, 然后好的(要不就好的)。
答案2
简单的:
在 Windows 资源管理器中
- 右键单击
.folder
您想要隐藏的; - 点击
properties
,然后点击选项general
卡; - 点击
hidden
。
完毕。
PS 仅在 Windows 7 Professional 上检查。 PPS 我注意到您的问题要求自动执行此操作。显然这行不通,但也许读者会觉得它很有用。
答案3
在 C# 中可以使用 System.IO.FileSystemWatcher。代码应该是这样的。只需编译它并将其放在启动文件夹中即可。但此代码不会隐藏已经存在的文件。因此,首先运行 Luke 的代码,然后运行此代码。您需要 System.IO 和 System.Security.Permissions
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
public static void Run()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "C:\\";
watcher.IncludeSubdirectories = true;
watcher.Filter = "*.*";
watcher.Renamed += new RenamedEventHandler(OnRenamed);
watcher.Created += new FileSystemEventHandler(watcher_Created);
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.EnableRaisingEvents = true;
Console.WriteLine("Started...");
while (true) ;
}
static void Check(string filename)
{
string name = Path.GetFileName(filename);
if (name.StartsWith(".") && !File.GetAttributes(filename).HasFlag(FileAttributes.Hidden))
{
File.SetAttributes(filename, File.GetAttributes(filename) | FileAttributes.Hidden);
}
}
static void watcher_Created(object sender, FileSystemEventArgs e)
{
Check(e.FullPath);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
Check(e.FullPath);
}
}
答案4
我编写了这个 powershell 函数,将其放在我的 powershell 配置文件中,以便无论何时启动新的 powershell 会话,该函数都可以随时使用。
function hide-dots {
param([string]$path=".")
if ($path -eq ".") {
$cwd = (Get-Location).Path.Substring((Get-Location).Path.LastIndexOf("\") + 1)
echo "Searching for files in $($cwd) ..."
}
else {
echo "Searching for files in $($path) ..."
}
$Activity = "Hidding Dot Files."
$isDotFile = {$_.name -match "^\..*"}
$isNotHidden = {$_.attributes -match 'Hidden' -eq $false}
$dotFileCount = 0
$markedCount = 0
Get-ChildItem $path -Recurse -Force -ErrorAction SilentlyContinue |
where $isDotFile |
where $isNotHidden |
foreach {
$path = $_.FullName
$dotFileCount++
Write-Progress `
-Activity $Activity `
-Status "Found $($dotFileCount) dot files."
if ([System.IO.File]::Exists($path)) {
Set-ItemProperty `
-name Attributes `
-value ([System.IO.FileAttributes]::Hidden) `
-path $path
$markedCount++
}
}
echo "Marked $($markedCount) dot file(s) as hidden."
}
如果没有给出指定的路径,它将递归搜索当前目录中的所有点文件并将文件或文件夹的属性设置为隐藏。