Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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

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

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

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.

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

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.

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...
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!

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.

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?!

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

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?

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 dies Thema gesperrt
Gast
Dieses Thema ist für weitere Antworten geschlossen.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.