Скрытие файлов / папок, которые начинаются с полной остановки (точка)
Windows не использует соглашение о точечных файлах для скрытых файлов. Однако многие приложения Windows (в основном с открытым исходным кодом / кросс-платформенные) используют файлы и папки с этим соглашением. Как я могу заставить Windows Explorer автоматически скрывать эти точечные файлы?
5 ответов
ATTRIB +H /s /d C:\.*
команда, которая скрывает что-либо, включая каталоги, начинающиеся с точки
Это не будет перечислять файлы (как указано ниже), но будет попадать в каждый файл, к которому он имеет доступ, и применять атрибут Hidden.
Как только это будет сделано, вы можете убедиться, что в настройках Папки скрыты скрытые файлы. Нажмите на Пуск, введите folder options
и нажмите Enter. Нажмите на вкладку " Вид ", затем выберите " Не показывать скрытые файлы, папки или диски" в папке " Файлы и папки" \ " Скрытые файлы и папки". Нажмите Apply, затем OK (или просто OK).
Просто:
В проводнике Windows
- Щелкните правой кнопкой мыши на
.folder
ты хочешь спрятаться; - Нажмите
properties
затем нажмите наgeneral
вкладка; - Нажмите на
hidden
,
Готово.
PS Проверено только на Windows 7 Professional. PPS Я заметил ваш вопрос, заданный для этого автоматически. Очевидно, что это не поможет, но, возможно, читатели найдут это полезным.
Это возможно в C#, используя System.IO.FileSystemWatcher. Код будет что-то вроде этого. Просто скомпилируйте его и поместите в папку "Автозагрузка". Но этот код не скрывает уже существующие файлы. Так что сначала запустите код от Люка, а потом этот код. Вам нужны 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);
}
}
Windows будет скрывать файлы со скрытым или системным флагом. Или файлы могут быть скрыты с помощью ACL. Windows не скрывает файлы по имени файла.
Чтобы Windows явно скрывала файлы по имени файла, вам нужно явно создать эту функцию. В этом случае будет работать либо драйвер файловой системы (для вирусов это характерно), либо взлом расширения оболочки.
Кстати, вы можете подделать эту функцию, отключив "Просмотр расширений файлов" в разделе "Параметры папки", поскольку для Проводника файл, начинающийся с точки, - это файл с расширением, но без имени.
Я написал эту функцию 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."
}
Если не указан указанный путь, он будет рекурсивно искать все точечные файлы в текущем каталоге и устанавливать атрибут файла или папки как скрытый.
Я не думаю, что есть способ сделать это автоматически, но вы можете попробовать использовать команду ATTRIB, чтобы скрыть эти файлы:
ATTRIB + H
Затем убедитесь, что вы настроили Explorer, чтобы не показывать скрытые файлы.