Zum Inhalt springen

Batchdatei - Schreibschutz entfernen ..


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

Brauche eine Batchdatei - es sind beliebig viele Dateien dort aufgelistet - in der einige einen Schreibschutz haben und einige wiederrum nicht.

Bei den Dateien welche einen Schreibschutz (war glaub irgendwas mit attrib -r um den Schreibschutz in der CMD zu entfernen), soll dieser entfernt werden und mir diese in der CMD ausgeben oder in eine txt-Datei schreiben.

Danach bearbeite ich die Dateien und kann auf diese wieder den Schreibschutz setzen (wie das funktioniert, weiss ich allerdings :D )

Ist sowas überhaupt mit einer Batch möglich?

Geschrieben

das auflisten funktioniert mit dir

dir /A:R *.* >>liste.txt

listet alle Dateien mit schreibschutz auf und schreibt die Ausgabe in die Datei liste.txt

Dann diesen Dateien den schreibschutz entfernen: attrib -r, bearbeiten und hinterher wieder setzen: attrib +r

Gruß

Enno

Geschrieben

Danke erstmal für die schnelle Antwort.

Haben uns allerdings ein bisschen missverstanden, denn die Dateien (welche ich in einer xls habe) sind nicht in einem Verzeichnis, sondern in verschiedenen.

Geschrieben

@lupo49

Bitte was ?!

Komm mit deiner Antwort nicht klar.

Mit dem Befehl "dir" komm ich glaube nicht weit, da ja die Dateien in unterschiedlichen Ordnern liegen, z.B.:

\\server1\path1\file1.xxx

\\server1\path2\file2.xxx

Geschrieben

Um ein Missverständnis auszuschließen:

Du hast eine Textdatei mit Pfaden zu Dateien als Inhalt. Den Pfad der Datei möchtest du auflesen und mittels einem Batchsrkipt das Attribut entfernt?

Wenn das so ist, brauchst du eine For-Schleife, die für jeden Datensatz in der Textdatei den entsprechenden Attributbefehl ausführt.

Geschrieben

Ja habe eine entsprechende txt Datei wenn ich die Pfade+Dateien aus Excel dort rein kopiere.

So und wie schon gesagt brauch ich dann eine for Schleife die mir überprüft ob ein Schreibschutz drin ist oder nicht. Wenn Schreibschutz = ja, dann soll er diesen entfernen und mir diese in eine seperate txt schreiben (also den Pfad+Datei).

Wie muss aber nun die for Schleife aussehen?:eek

Geschrieben

Da du anscheinen kein Ehrgeiz hast, hier ist schon mal ein Anfang:


for /F "tokens=2-3 delims= " %i in (liste.txt) do @echo %i %j

Jetzt musst du nur noch analysieren, wie du die Zeilen mit dem "R" filtern kannst.

Geschrieben

FOR /F "usebackq" %i IN (´DIR C:\ /B/S/AR´) DO ATTRIB -r %i

Damit könntest den Schreibschutz von allen Dateien entfernen.

:confused:

Mit der Liste der Dateien (*.TXT) sollte folgendes gehn:

FOR /F "usebackq" %i IN (`TYPE LISTE.TXT`) DO ATTRIB -r %i

Voraussetzung dafür is eben, dass in der TXT-Datei der komplette Pfad aufgelistet is.

  • 3 Wochen später...
Geschrieben
Da du anscheinen kein Ehrgeiz hast, hier ist schon mal ein Anfang:


for /F "tokens=2-3 delims= " %i in (liste.txt) do @echo %i %j

Jetzt musst du nur noch analysieren, wie du die Zeilen mit dem "R" filtern kannst.

Sry, was hat das mit Ehrgeiz zu tun?! Ich habe von for-Schleifen kein blaßen Schimmer. Und selbst deine Antwort ist für mich chinesisch :(

Dennoch danke für deine Antwort!

FOR /F "usebackq" %i IN (´DIR C:\ /B/S/AR´) DO ATTRIB -r %i

Damit könntest den Schreibschutz von allen Dateien entfernen.

:confused:

Mit der Liste der Dateien (*.TXT) sollte folgendes gehn:

FOR /F "usebackq" %i IN (`TYPE LISTE.TXT`) DO ATTRIB -r %i

Voraussetzung dafür is eben, dass in der TXT-Datei der komplette Pfad aufgelistet is.

Auch hier Danke für die Antwort. Könntest du mir die zweite for-Schleife genauer erläutern? Wäre super nett!

Geschrieben
Sry, was hat das mit Ehrgeiz zu tun?! Ich habe von for-Schleifen kein blaßen Schimmer. Und selbst deine Antwort ist für mich chinesisch :(

Dennoch danke für deine Antwort!

Auch hier Danke für die Antwort. Könntest du mir die zweite for-Schleife genauer erläutern? Wäre super nett!

Das Attribut "usebackq" bedeutet, das alles was innerhalb von ` steht als Befehl angesehen wird.

Die Schleife gibt dir per TYPE die Textdatei zeilenweise aus und für jede Zeile führt er den Befehl "ATTRIB -r %i" aus, wobei %i der vollständige Dateiname aus der Textdatei is.

Alles was du also benötigst is eine Textdatei die so ausschaut:


C:\BLABLA\Datei1.exe

C:\BLABLUB\XYZ.jpg

D:\MIRFÄLLTNIXMEHREIN\123.dat

(So ne Liste kriegste ja leicht mit DIR /B /S aufs gewünschte Verzeichnis)

Somit führt dir der Batch folgende Befehle aus:

ATTRIB -R C:\BLABLA\Datei1.exe

ATTRIB -R C:\BLABLUB\XYZ.jpg

ATTRIB -R D:\MIRFÄLLTNIXMEHREIN\123.dat

Folge -> Schreibschutz auf den Dateien entfernt.

Geschrieben

Ok super! Danke für deine Antwort.

Jetzt habe ich aber ncoh mal eine Frage:

Gibt es eine Möglichkeit, aus einer bestehenden txtDatei rauszulesen, welche von diesen einen Schreibschutz haben und welche nicht?!

Geschrieben

Müsste eigentlich so gehn

FOR /F "usebackq" %i IN (`TYPE LISTE.TXT`) DO ATTRIB %i|FINDSTR "^.....R">>C:\DATEIEN.TXT
Was macht das Teil? Wie schon vorher gesagt wird die LISTE.TXT zeilenweise ausgegeben und pro Zeile wird ATTRIB ausgeführt. Die Ausgabe sieht dann evtl so aus:

     R  I    C:\Users\TESTER\NTUSER.DAT

A  SH   I    C:\Users\TESTER\ntuser.dat.LOG1

A  SH   I    C:\Users\TESTER\ntuser.dat.LOG2

Auf diese Ausgabe wird dann der Befehl FINDSTR ausgeführt. Das Kennzeichen für Schreibschutz ("R") steht dabei immer an der sechsten Stelle (zumindest bei Windows7 :D).

Das "^.....R" bedeutet:

^ -> such nur vom Anfang an (sonst findet er auch Dateien die einfach ein R im Namen haben)

.....R -> Fünf beliebige Zeichen gefolgt von einem R.

Schlussendlich werden die entsprechenden Zeilen in die Datei C:\DATEIEN.TXT ausgegeben

Geschrieben

Danke :)

FOR /F "usebackq" %i IN (`TYPE Liste.txt`) DO ATTRIB %i|FINDSTR "^.....R">>C:\temp\showme.txt

Habe das in der Powershell von Windows ausgeführt, bekomme allerdings keine showme.txt Datei! (Die Datei Liste.txt liegt im gleichen Verzeichnis wie testattrib.bat - also auf dem Desktop)

Wenn ich das unter XP ganz normal in der CMD versuche kommt ausserdem die folgende Fehlermeldung:

=======================================================

C:\Documents and Settings\noname>"C:\Documents and Settings\noname\Desktop\testattrib.bat"

i was unexpected at this time.

=======================================================

Denke aber das liegt daran, das man die Powershell braucht, mit der er mir aber keine txt-Datei erstellt.

Kann mir jemand helfen und sagen wo der Fehler sein könnte?

Geschrieben

In einer Batchdatei musst du bei Variablen immer doppelte %-Zeichen verwenden!

Also statt %i muss in der Batch %%i stehen!

Mit der Powershell hab ich persönlich noch nich wirklich gearbeitet.

  • 14 Jahre später...
  • mapr hat Thema gesperrt
Gast
Dieses Thema wurde nun für weitere Antworten gesperrt.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...