Команда Windows для отображения всех атрибутов файла - PullRequest
0 голосов
/ 24 января 2019

Я вижу, что окна отображают атрибуты в моем файле как ALO.Мне нужна Windows (не команда Powershell) для отображения атрибутов в моем файле.

Но когда я использую команду attrib.Он показывает только установленный атрибут, поскольку атрибуты LO пропущены.

ОС: Windows 7.

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib

https://msdn.microsoft.com/en-us/library/cc246322.aspx

1 Ответ

0 голосов
/ 24 января 2019

Сверните свои

ConsoleAttr.vb

imports System.Runtime.InteropServices 
Public Module MyApplication  

Public Declare Unicode Function GetFileAttributesW Lib "Kernel32" (ByVal Path As String) As Integer
Public Const FILE_ATTRIBUTE_ARCHIVE = 32 
Public Const FILE_ATTRIBUTE_COMPRESSED = 2048 
Public Const FILE_ATTRIBUTE_DEVICE = 64 
Public Const FILE_ATTRIBUTE_DIRECTORY = 16 
Public Const FILE_ATTRIBUTE_ENCRYPTED = 16384 
Public Const FILE_ATTRIBUTE_HIDDEN = 2 
Public Const FILE_ATTRIBUTE_INTEGRITY_STREAM = 32768 
Public Const FILE_ATTRIBUTE_NORMAL = 128 
Public Const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192 
Public Const FILE_ATTRIBUTE_NO_SCRUB_DATA = 131072 
Public Const FILE_ATTRIBUTE_OFFLINE = 4096 
Public Const FILE_ATTRIBUTE_READONLY = 1 
Public Const FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 4194304 
Public Const FILE_ATTRIBUTE_RECALL_ON_OPEN = 262144 
Public Const FILE_ATTRIBUTE_REPARSE_POINT = 1024 
Public Const FILE_ATTRIBUTE_SPARSE_FILE = 512 
Public Const FILE_ATTRIBUTE_SYSTEM = 4 
Public Const FILE_ATTRIBUTE_TEMPORARY = 256 
Public Const FILE_ATTRIBUTE_VIRTUAL = 65536 

Public Sub Main ()
    Dim Ret as Integer
    Dim OutPut As String
    Output = Command() & " "
    Ret = GetFileAttributesW(Command())
    If Ret = 0 Then 
        Console.writeline("Error " & err.lastdllerror)
    Else
        If (Ret And FILE_ATTRIBUTE_ARCHIVE) = FILE_ATTRIBUTE_ARCHIVE Then Output = OutPut & "Archive "
        If (Ret And FILE_ATTRIBUTE_COMPRESSED) = FILE_ATTRIBUTE_COMPRESSED Then Output = OutPut & "Compressed "
        If (Ret And FILE_ATTRIBUTE_DEVICE) = FILE_ATTRIBUTE_DEVICE Then Output = OutPut & "Device "
        If (Ret And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then Output = OutPut & "Directory "
        If (Ret And FILE_ATTRIBUTE_ENCRYPTED) = FILE_ATTRIBUTE_ENCRYPTED Then Output = OutPut & "Encrypted "
        If (Ret And FILE_ATTRIBUTE_HIDDEN) = FILE_ATTRIBUTE_HIDDEN Then Output = OutPut & "Hidden "
        If (Ret And FILE_ATTRIBUTE_INTEGRITY_STREAM) = FILE_ATTRIBUTE_INTEGRITY_STREAM Then Output = OutPut & "Integrity_Stream "
        If (Ret And FILE_ATTRIBUTE_NORMAL) = FILE_ATTRIBUTE_NORMAL Then Output = OutPut & "Normal "
        If (Ret And FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) = FILE_ATTRIBUTE_NOT_CONTENT_INDEXED Then Output = OutPut & "Not_Content_Indexed "
        If (Ret And FILE_ATTRIBUTE_NO_SCRUB_DATA) = FILE_ATTRIBUTE_NO_SCRUB_DATA Then Output = OutPut & "No_Scrub_Data "
        If (Ret And FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY Then Output = OutPut & "ReadOnly "
        If (Ret And FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS) = FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS Then Output = OutPut & "Recall_On_Data_Access "
        If (Ret And FILE_ATTRIBUTE_RECALL_ON_OPEN) = FILE_ATTRIBUTE_RECALL_ON_OPEN Then Output = OutPut & "Recall_On_Open "
        If (Ret And FILE_ATTRIBUTE_REPARSE_POINT) = FILE_ATTRIBUTE_REPARSE_POINT Then Output = OutPut & "Reparse "
        If (Ret And FILE_ATTRIBUTE_SPARSE_FILE) = FILE_ATTRIBUTE_SPARSE_FILE Then Output = OutPut & "Sparse "
        If (Ret And FILE_ATTRIBUTE_SYSTEM) = FILE_ATTRIBUTE_SYSTEM Then Output = OutPut & "System "
        If (Ret And FILE_ATTRIBUTE_TEMPORARY) = FILE_ATTRIBUTE_TEMPORARY Then Output = OutPut & "Temporary "
        If (Ret And FILE_ATTRIBUTE_VIRTUAL) = FILE_ATTRIBUTE_VIRTUAL Then Output = OutPut & "Virtual "
    End If
    Console.writeline(OutPut)
End Sub
End Module 

Для компиляции

ConsoleAttr.bat

C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc "%~dp0\ConsoleAttr.vb" /out:"%~dp0\ConsoleAttr.exe" /target:exe

Некоторые примеры

C:\Windows\system32>"C:\Users\User\Desktop\ConsoleAttr.exe" \\?\c:\bootnxt
\\?\c:\bootnxt Archive Hidden System

C:\Windows\system32>"C:\Users\User\Desktop\ConsoleAttr.exe" \\?\c:\windows\winsxs
\\?\c:\windows\winsxs Directory

C:\Windows\system32>"C:\Users\User\Desktop\ConsoleAttr.exe" c:\windows\win.ini
c:\windows\win.ini Archive

Чтобы сделать несколько файлов, вставленных в цикл for.

For %A in ("c:\windows\*.exe") Do @"C:\Users\User\Desktop\ConsoleAttr.exe" %A

c:\windows\bfsvc.exe Archive
c:\windows\explorer.exe Archive
c:\windows\extrac32.exe Archive
c:\windows\HelpPane.exe Archive
c:\windows\hh.exe Archive
c:\windows\notepad.exe Archive
c:\windows\regedit.exe Archive
c:\windows\REGTLIB.EXE Archive

Или для каталогов

For /d %A in ("c:\windows\system32\*") Do @"C:\Users\User\Desktop\ConsoleAttr.exe" %A
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...