Ответы:
После некоторых проблем (команда attrib не позволяет использовать некоторые символы подстановки), я получил следующую строку:
@for %%X in (.*.*) do attrib +h %%X
Просто поместите его в пакетный файл (.bat), и он сделает свое дело (для этого каталога).
Если вы хотите это для нескольких директорий, просто установите его запускать один раз в день в этих каталогах.
Надеюсь, это то, что вам нужно.
Используя Powershell, сохраните следующее в файле сценария (например, hidedotfiles.ps1) и запускайте его всякий раз, когда вы не хотите скрывать точечные файлы.
Конечно, следующую однострочную строку можно упростить, используя псевдонимы и "-f" для "-force" и "-r" для "-recurse", но чтобы быть поучительным, я выписал это в полной форме:
Get-ChildItem "C:\" -recurse -force | Where-Object {$_.name -like ".*" -and $_.attributes -match 'Hidden' -eq $false} | Set-ItemProperty -name Attributes -value ([System.IO.FileAttributes]::Hidden)
По сути, Get-ChildItem -recurse -force получает все элементы и выполняет поиск во всех папках, заставляя скрытые элементы отображаться. Затем мы ищем файлы и папки, которые начинаются с точки, и выбираем только те файлы, которые имеют скрытый атрибут. После того, как мы перечислили все файлы, мы устанавливаем их атрибуты скрытыми, используя Set-ItemProperty.
Where-Object
и другое Set-ItemProperty
не нужно. С таким же успехом это можно сделать как Get-ChildItem ".*" -Recurse -Force | ForEach-Object { $_.Attributes += "Hidden" }
.
Чтобы скрыть все точечные файлы / каталоги на диске (а не в одном каталоге), я считаю, что этот ответ лучше всего работает:
ATTRIB +H /s /d C:\.*
@for /d %%X in (.*.*) do attrib +h %%X