
Я заметил, что ни , cmd
ни не powershell
могут выполнять рекурсивный поиск файлов с атрибутом «скрытый».
Так есть ли способ обойти это? Я имею в виду, кроме необходимости удалить атрибут «скрытый» из файла или файлов, о которых идет речь, для чего мне нужно было бы заранее знать их местоположение, что, конечно, сделало бы все упражнение бессмысленным.
Почему не работает с файлами, имеющими атрибут "скрытый"? Это какая-то функция безопасности?
Пример (cmd)
C:\>dir /b
Intel
PerfLogs
plant
Program Files
Program Files (x86)
Users
Windows
C:\>cd plant
C:\plant>dir /b
banana.txt
C:\plant>attrib banana.txt
A C:\plant\banana.txt
C:\plant>attrib -a +h banana.txt
C:\plant>dir /b
C:\plant>dir /b banana.txt
File Not Found
C:\plant>cd /
C:\>dir /b /s banana.txt
File Not Found
C:\>
решение1
Чтобы вывести список скрытых файлов, используйтеPowerShellвам придется использовать -Force
параметр. Таким образом, используя Get-ChildItem -Force -Recurse
вы получите список всех файлов, включая скрытые файлы.
Get-Help Get-ChildItem -Examples
:
Параметр Force добавляет скрытые файлы на дисплей.
Да, это не интуитивно понятно, и описание самого параметра ничего не говорит.
Для самой командной строки это было бы dir /A
или dir /AH
только для перечисления скрытых файлов, но я не уверен, как вы будете искать этот вывод.
решение2
В командной строке Windows используйте ключи /a и /s для всех файлов и рекурсивно:
/A Displays files with specified attributes.
/S Displays files in specified directory and all subdirectories.
Пример
dir/a/s
В Powershell я использую тот же метод, только с -force вместо /a, чтобы показать все файлы:
dir -force -s
или
dir -force -r
Также в Powershell есть команда ls, позволяющая набрать на 1 символ меньше!
ls -force -s
или
ls -force -r
решение3
Наконец ответ был:
ЦМД:
dir /a:H /s
POWERSHELL:
ls -ah -recurse
(опция -force)