Wie entferne ich das Attribut "Systemdatei" aus einer Datei ohne Eingabeaufforderung?

7

Ist es möglich, das Dateisattribut "System" einer Datei ohne Eingabeaufforderung zu entfernen? Grundsätzlich möchte ich Folgendes tun:

attrib "folder" -s
attrib "file" -s

ohne Verwendung der Eingabeaufforderung oder einer Batch-Datei. Mit dem Windows Explorer-Eigenschaftenmenü können Sie dies für die ausgeblendeten und schreibgeschützten Attribute tun. Gibt es eine Möglichkeit, dies mit dem Systemattribut zu tun?

Oztaco - Wiedereinsetzung von Monica C.
quelle
Ohne die Eingabeaufforderung zu verwenden? Soweit mir bekannt ist, nicht nativ im Windows Explorer, aber es sollte viele andere GUI-Programme und möglicherweise sogar Explorer-Shell-Erweiterungen geben, die dies tun. Was genau willst du? Ein GUI-Programm oder etwas im Explorer?
Bob
Ja, ich möchte einen Weg, dies schneller zu tun, als jedes Mal eine Batch-Datei oder CMD auszuführen
Oztaco - Monica C. wieder herstellen
@ leaf68: ist GUI schneller als Kommandozeile !! Ich fürchte, die meisten Leute werden dem nicht zustimmen !! : D
Vineet Menon
@ VineetMenon lol es ist nicht nur Geschwindigkeit, sondern auch ein bisschen Faulheit: P
Oztaco - Reinstate Monica C.
@ leaf68: ja ... das stimme ich zu ...: P
Vineet Menon

Antworten:

8

Wenn Sie etwas möchten, das Sie über das Kontextmenü tun können, können Sie auf folgende Weise Zeit sparen, wenn Sie versuchen, dies häufig zu tun:

Erstellen Sie eine Batchdatei RemoveSysAttrib.bat

@echo off
attrib -s "%1%"

Befolgen Sie dann diese Anleitung, um dem Kontextmenü eine benutzerdefinierte App hinzuzufügen: Hinzufügen einer beliebigen Anwendung zum Windows-Desktop- Kontextmenü

Sie könnten dann einen Menüpunkt namens "Systemattribut entfernen" haben, der genau das unter Verwendung Ihrer Batch-Datei tut. Auf diese Weise können Sie auch ein Skript erstellen, um das Attribut wieder hinzuzufügen. Es könnte etwas umständlich sein, es für mehrere Dateiauswahlen zum Laufen zu bringen, aber mit etwas Glück wird Ihre Datei für jedes ausgewählte Element einmal gestartet. Sie möchten dies testen mit:

@echo off
echo %1%
pause

Wenn die Dateinamen als Attribut 1, 2, 3 usw. angegeben werden, müssen Sie alle Parameter durchlaufen. Wenn mehr als ein Parameter angegeben wird, können Sie Ihr Skript rekursiv wie folgt aufrufen:

if NOT "%2%"=="" (
    for %%A in (%*) do (
        RemoveSysAttrib.bat "%%A"
    )
) else (
    attrib -s "%1%"
)

Hoffe das hilft =)


Als Antwort auf die Kommentare von Synetech:

Wenn Sie verwenden attrib, werden die Einstellungen Hoder nicht geändert S, wenn die andere Einstellung festgelegt ist (es wird angezeigt, dass die XXXX-Datei nicht zurückgesetzt wird ). Sie müssten beide entfernen (oder festlegen) und dann diejenige, die Sie nicht ändern wollten, wieder auf den vorherigen Wert zurücksetzen.

Ich habe das Skript erweitert, um das vom Windows 7- attribBefehl gemeldete Attribut 'H' zu überprüfen . Um es allgemeiner zu gestalten, müssten Sie mehr Teilstring-Positionen überprüfen, da ich die Vermutung habe, dass es in anderen Versionen anders ist. Ich habe momentan keine anderen Windows-Versionen zur Hand, daher kann ich das nicht überprüfen.

@echo off
setlocal enabledelayedexpansion

:: Check if file is hidden - works on Windows 7
set hidden=0
for /f "delims=" %%A in ('attrib "%1%"') do (
    set attr=%%A
    if "!attr:~4,1!"=="H" set hidden=1
)

:: If file is hidden, remove both attributes, then hide again.
if %hidden%==1 (
    attrib -S -H "%1%"
    attrib +H "%1%"
) else (
    attrib -S "%1%"
)

endlocal
Paddy
quelle
Ähm, es tut mir leid, dass Sie eine Batch-Dateilösung erhalten haben, von der Sie ausdrücklich angegeben haben, dass Sie sie nicht möchten, aber ich denke, Sie haben gemeint, dass Sie nichts manuell eingeben müssen. Die Verwendung des Kontextmenüs vermeidet dies. =)
Paddy
ah danke, ich habe versucht , dass die genauen Artikel zu finden , weil ich meinen PC vor kurzem formatierte und verwendet , dass vor :) ... ja ich nur will nicht es jedes Mal neu eingeben
Oztaco - wieder einzusetzen Monica C.
1
Abgesehen davon, dass das Konsolenfenster angezeigt wird, funktioniert Ihre Idee überhaupt nicht, wenn für die Datei das versteckte Attribut festgelegt ist. Wenn Sie verwenden attrib, werden die Einstellungen Hoder nicht geändert S, wenn die andere Einstellung festgelegt ist (es wird angezeigt, dass die XXXX-Datei nicht zurückgesetzt wird ). Sie müssten beide entfernen (oder festlegen) und dann diejenige, die Sie nicht ändern wollten, wieder auf den vorherigen Wert zurücksetzen. Dies bedeutet, Umgebungseinstellungen und / oder temporäre Dateien zu verwenden.
Synetech
Danke @Synetech Ich habe eine Erweiterung angeboten, um dies zu handhaben. Um das ästhetische Problem des kurz angezeigten Befehlsfensters zu beheben, können Sie eine Verknüpfung mit der Einstellung "Minimiert ausführen" verwenden.
Reis
Nett. (Ist es nicht ärgerlich, wie manchmal sogar eine geringfügige Erhöhung eines Programms es drastisch komplizieren kann? Sie können es nicht einmal verwenden, findda es den Dateinamen druckt.)
Synetech
0

Sie können die AttrMenu- Shell-Erweiterung verwenden, die einen Kontextmenüeintrag für Dateien und Ordner erstellt:

Screenshot des AttrMenu-Kontextmenüs

Synetech
quelle