wollie11
Goto Top

Batchdatei soll eine in allen Laufwerken vorkommende Datei ändern

Mein WinXP-prof-System (SP3 in aktueller Fassung) hat in einer mir nicht bekannten dunklen Stunde alle Dateien "Desktop.ini" mit unterschiedlichen Attributen versehen. Im Regelfall kann ich diese nicht über das Windows-Fenster "Dateieigenschaften" ändern, sondern nur über die Konsole per CMD-Befehl "attrib". Im Einzelfall mag die Tastatur-Hackerei ja zumutbar sein, aber nicht bei der Masse. Deshalb habe ich mir eine CMD-Datei geschrieben, mit der sich zumindest unter Eingabe des Pfadnamens per kopieren/einfügen die Änderung halbwegs elegant durchführen lässt.

Schön wäre es jedoch, wenn per CMD-Datei besagte Dateien selbständig gefunden und geändert würden. Nun bin ich aber in der Batch-Programmierung nicht so bewandert und auch im Internet habe ich nichts für mich verständliches gefunden. Daher meine Bitte, als Antwort mitzuteilen, welchen Code ich wie schreiben muss.

Auf Wunsch kann ich natürlich die gesamte Batch-Datei ins Forum stellen. Hinweis: Einen Auszug aus dieser Datei habe ich soeben gesondert eingestellt mit der Frage, wie in einer CMD-Datei die Abfrage einer Tastatureingabe zu formulieren ist (meine Programmierung funktioniert nämlich nicht).

Schon jetzt meinen herzlichen Dank aus der Stadt des Bartmannkruges.

Wollie

Content-Key: 104641

Url: https://administrator.de/contentid/104641

Printed on: April 19, 2024 at 15:04 o'clock

Member: DerWoWusste
DerWoWusste Dec 23, 2008 at 00:33:11 (UTC)
Goto Top
Ist es eine Option, die Dinger zu löschen? Sie erstellen sich von selbst wieder.
Member: Wollie11
Wollie11 Dec 23, 2008 at 10:27:23 (UTC)
Goto Top
Hallöchen,

nein, das ist überhaupt keine Option.

Verwaltet eine Desktop.ini doch z. B. das Hintergrund-Bild eines Explorer-Fenster (des rechten Fensters), die Schriftfarbe im rechten Explorer-Fenster (beides unter Win98 direkt einrichtbar, unter XP z. B. nur per Backgrounder), Symbole des jeweiligen Ordners (Eigenschaften/Anpassen/Anderes Symbol) und noch so einiges mehr.

Und diese Informationen dürften doch mit Deinem Vorschlag verloren gehen. Davon abgesehen wird nach meiner Kenntnis eine Desktop.ini doch nur auf den Einzelfall bezogen eingerichtet, also nicht generell.

Wollie
Member: bastla
bastla Dec 23, 2008 at 11:41:39 (UTC)
Goto Top
Hallo Wollie11 und willkommen im Forum!

Da "attrib" ja den Schalter "/s" unterstützt, sollte das eigentlich keine so große Sache sein (im Beispiel für die komplette Partition Cface-smile:
attrib /s C:\desktop.ini -s -h -r
attrib /s C:\desktop.ini +s +h
Grüße
bastla
Member: Wollie11
Wollie11 Dec 23, 2008 at 14:42:49 (UTC)
Goto Top
Hallo bastla,

Bingo, das war's. Herzlichen Dank! Ich erinnere mich jetzt, dass ich die CMD-Hilfe zum Schalter /s nicht verstanden hatte, vermutlich weil die Lösung so unglaublich klang.

Jetzt bitte noch zum Luxus, weil grundsätzlicher Natur. Wie lässt sich eine solche Suche auf alle primären und logischen Laufwerke ausweiten, also nicht nur auf 1 Laufwerk bezogen (hier z. B. Lw C bis Lw. L).

Nochmals Danke

Wollie
Member: bastla
bastla Dec 23, 2008 at 15:51:51 (UTC)
Goto Top
Hallo Wollie11!

Soferne kein Einwand gegen die Verwendung von etwas (integriertem) VBScript besteht, könnte der Batch so aussehen:
@echo off & setlocal
set G=%temp%\GetLocalDrives.vbs
>%G% echo For Each d In CreateObject("Scripting.FileSystemObject").Drives:If d.DriveType=2 Then:L=L^&" "^&d.DriveLetter:End If:Next:WScript.Echo Mid(L,2)  
for /f "delims=" %%i in ('cscript //nologo %G%') do set "DriveList=%%i"  

for %%i in (%DriveList%) do (
    echo attrib /s %%i:\desktop.ini -s -h -r
    echo attrib /s %%i:\desktop.ini +s +h
)
Die beiden "echo" vor den "attrib"-Befehlen sind für das Testen gedacht - so werden die Befehle nur angezeigt, aber nicht ausgeführt. Wenn Du Ernst machen willst, einfach diese beiden "echo" entfernen.
Eine "halbautomatische" Version (in welcher Du die Laufwerksbuchstaben selbst vorgeben musst), würde als Ersatz der Zeilen 2 bis 4 entweder
set "DriveList=C E F"
oder
set "DriveList=%~1"
verwenden. Im zweiten Fall müsste der Batch dann mit
RepariereDesktopIniAufLaufwerken.cmd "C E F"
gestartet werden.

Grüße
bastla