zero61 Geschrieben 6. Oktober 2009 Teilen 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? Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 6. Oktober 2009 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zero61 Geschrieben 6. Oktober 2009 Autor Teilen 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. Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 6. Oktober 2009 Teilen Geschrieben 6. Oktober 2009 Du möchtest den Parameter "/S" bei "dir /A:R" benutzen oder wo ist das Problem nun? Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zero61 Geschrieben 7. Oktober 2009 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 7. Oktober 2009 Teilen 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. Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zero61 Geschrieben 7. Oktober 2009 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 7. Oktober 2009 Teilen 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. Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
screama Geschrieben 8. Oktober 2009 Teilen 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. Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zero61 Geschrieben 26. Oktober 2009 Autor Teilen 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! Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
screama Geschrieben 26. Oktober 2009 Teilen 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. Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zero61 Geschrieben 27. Oktober 2009 Autor Teilen 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?! Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
screama Geschrieben 27. Oktober 2009 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zero61 Geschrieben 28. Oktober 2009 Autor Teilen 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? Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
screama Geschrieben 28. Oktober 2009 Teilen 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. Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jubakolb1 Geschrieben 24. April Teilen Geschrieben 24. April attrib -R *.* /S entfernt für alle Dateien einschl. aller Unterverzeichnisse den Schreibschut. Mit +R kann man alles setzen. So einfach! Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge