zero61 Geschrieben 6. Oktober 2009 Geschrieben 6. Oktober 2009 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 ) Ist sowas überhaupt mit einer Batch möglich?
Enno Geschrieben 6. Oktober 2009 Geschrieben 6. Oktober 2009 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
zero61 Geschrieben 6. Oktober 2009 Autor Geschrieben 6. Oktober 2009 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.
lupo49 Geschrieben 6. Oktober 2009 Geschrieben 6. Oktober 2009 Du möchtest den Parameter "/S" bei "dir /A:R" benutzen oder wo ist das Problem nun?
zero61 Geschrieben 7. Oktober 2009 Autor Geschrieben 7. Oktober 2009 @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
lupo49 Geschrieben 7. Oktober 2009 Geschrieben 7. Oktober 2009 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.
zero61 Geschrieben 7. Oktober 2009 Autor Geschrieben 7. Oktober 2009 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
lupo49 Geschrieben 7. Oktober 2009 Geschrieben 7. Oktober 2009 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.
screama Geschrieben 8. Oktober 2009 Geschrieben 8. Oktober 2009 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.
zero61 Geschrieben 26. Oktober 2009 Autor Geschrieben 26. Oktober 2009 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!
screama Geschrieben 26. Oktober 2009 Geschrieben 26. Oktober 2009 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.
zero61 Geschrieben 27. Oktober 2009 Autor Geschrieben 27. Oktober 2009 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?!
screama Geschrieben 27. Oktober 2009 Geschrieben 27. Oktober 2009 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 ). 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
zero61 Geschrieben 28. Oktober 2009 Autor Geschrieben 28. Oktober 2009 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?
screama Geschrieben 28. Oktober 2009 Geschrieben 28. Oktober 2009 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.
jubakolb1 Geschrieben 24. April Geschrieben 24. April attrib -R *.* /S entfernt für alle Dateien einschl. aller Unterverzeichnisse den Schreibschut. Mit +R kann man alles setzen. So einfach!
Empfohlene Beiträge