1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
737
737
EMPFEHLEN
-
Hi,
ich hab mich schon ein wenig im Forum umgesehen, jedoch bin ich bisher nicht auf eine Lösung gekommen.
Mein Problem:
Ich soll eine Batch-Datei erstellen, welche die Verzeichnisnamen in einem Verzeichnis ausliest und diese dann ggf. an eine weitere Batch-Datei übergibt, welche dann dafür sorgt, dass bestimmte Daten in diesem Verzeichnissen gelöscht werden. Soll zur Reinigung der Temp-Dateien dienen.
Nun hab ich jedoch bisher nur Beispiele gefunden, welche Dateien und nicht Verzeichnisse auslesen. Jdeoch brauch ich lediglich dich Verzeichnisnamen, welche übergeben werden sollen.
Da ich leider nicht wirklich viel Ahnung mit Batch-Programmen habe, komme ich da nicht wirklich weiter.
Bisher schaut mein Versuch so aus:
Code :1 2 3 4 5
@echo off for /f %i in ('dir K:\Profile /a-d /b /o-d') echo %laufwerk% >> K:\Profile\log.txt
Ich möchte damit noch gar nicht die zweite Batch, welche schon existieret, da schon mal jemand die geschrieben hat, um schnell mal die Temp-Dateien zu löschen, jedoch ist diese so geschrieben, dass sie immer angepasst werden muss. Dies soll jedoch wegfallen, damit man, wenn Verzeichnisse hinzugefügt werden, diese von der zweiten (reinigenden) Batch beachtet werden, ohne das da was umgeschrieben werden muss.
Mein kleines Programm soll erstmal nur die Verzeichnisnamen in einer Text-Datei speichern, damit ich scuh schauen kann, ob die Namen auch alle übergeben wurden. Die Text-Datei fällt dann anschliessend weg und via Call (ich glaube so war das), soll dann die zweite Batch-Datei aufgerufen werden, wohin dann die Verzeichnisnamen übergeben und abgearbeitet werden.
Ich hoffe dass mir da jemand ein wenig bei weiter helfen kann.
Vielen Dank schonmal
Salvation
-
24.05.11 12:20 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.
Du solltest dir mal anschauen was die Optionen des dir Befehls machen, die du da angegeben hast.
Und lies dir mal "help for" durch.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi,
angeschaut und umgebaut. Code schaut nun so aus.
Code :1 2 3 4 5
@echo off dir K:\Profile /A:D /B >> K:\Profile\dir.log for /D %I IN (dir.log) DO del Test
Ich kann mit dem Dir-Befehl nun die Verzeichnisenamen an die 'dir.log' übergeben. Soweit passt es. Nun wollt sich jedoch so lassen, dass gleich in der Datei auch die For-Anweisung ausgeführt wird.
Dazu muss auf die 'dir.log' zugegriffen werden. Ich bin nun soweit, dass der Coed so steht und zumindest bis :
Code :1
for /D %I
läuft. Jedoch ist das %I wohl falsch. Bekomme diese Meldung: "I" ist syntaktisch an dieser Selle nicht verarbeitbar.
Salvation
EDIT:
Ich habs nun soweit, dass er die Daten anhängt. Sprich die 'dir.log' ausliest und mit übergibt. Jedoch kommt nun die meldung, dass er die Datei nicht gefunden werden konnte.
Code :1 2 3 4 5
@echo off dir K:\Profile /A:D /B >> K:\Profile\dir.log for /f %%f in (dir.log) DO DEL /F /S /Q /A:H "Test" %%f\Test
Aufbau der Verzeichnise:
Profile
- Test1
-- Test
-Test 2
-- Test
- Test3
- Test4
...
Die Test soll gelöscht werden.Geändert von Salvation (24.05.11 um 13:00 Uhr) Grund: Anfügen von Infos
-
24.05.11 13:00 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Wozu soll der Doppelpunkt bei /A:D gut sein? Hab ich noch nie gesehen. (scheint allerdings auch keine Wirkung zu haben).
Warum verwendest du nicht einfach eine FOR /F Schleife statt eine temp. Datei anzulegen?
Wie auch in "help for" steht, muss man %%variable (2 Prozentzeichen) in einem Batch Programm schreiben wenn man den FOR Befehl verwenden will.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi,
ich hab wohl im selben Moment editiert, wie du geantwortet hast. Ich habe die letzte Zeile schon ein wenig mehr angepasst, soweit kam ich eben selbst dahinter. Der Kopf ist so geblieben. Diesen hab ich im Internet gefunden und nur an meine Daten angepasst. Daher auch das A
. Ich habs drin gelassen, da ich selbst, dass muss ich gestehen, nicht weiss, wofür es ist.
Es soll in eine gesonderte Datei laufen, damit diese gelegendlich geprüft werden kann. Jedoch hab ich selbst gemerkt, dass die Daten immer wieder angehängt werden, was nicht redundant ist.
Die For-Schleife schaut nun so aus:
Code :1
for /f %%f in (dir.log) DO DEL /F /S /Q /A:H %%f\Test
Wie oben schon gesagt, funktioniert es in soweit, dass er sie anspricht, aber den Test-Ordner (ist in Test1 und Test2) nicht findet. Zudem läuft das Programm scheinbar sechs mal durch.
-
24.05.11 13:31 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Siehe z.B. http://www.adminbox.de/2010/batch-ku...g-umleitungen/
Vermutlich mußt du erstmal das Verzeichnis wechseln. (pushd)
Wie kommst du darauf?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Was ein son kleines '>' Ding schon macht. Habs ausgebessert
Okay, hier stoß ich grade ein wenig an meine Grenzen, aber ich lese mich da mal durch.
Nachgezählt, aber ich verbesser mich. Erläuft sie so oft durch, wie die Daten in der Log gespeichert wurden. Dank deinem Link wurde das nun behoben.
LG Salvation
Gruß[/QUOTE]
-
Hi,
kann es sein, dass man darüber nur Dateien und keine Verzeichnisse löschen kann, denn das hab ich nun schon hinbekommen. Was jedoch ein wenig nervig ist, ist die Anfrage, ob man es den wirklich löschen will.
Was das pushd angeht, komme ich damit gar nicht weiter. Zumindest die Versuche verlaufen sich irgendwie.
Salvation
-
24.05.11 14:29 #9
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Versuch mal rmdir.
Deine ganzen Aktionen spielen sich doch direkt unterhalb von K:\Profile ab, oder?! Dann mußt du doch nur am Anfang vom Skript in dieses Verzeichnis wechseln, sonst werden die Verzeichnisse, die in der log.txt drin stehen ja nicht gefunden. Das war doch das Problem, oder?
GrußCode :1 2 3 4
pushd k:\profile || exit /b 1 dir /AD /B > dir.log for /f %%f in (dir.log) DO rmdir /S /Q %%f\Test
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi,
passt. Funktioniert.
Vielen lieben Dank.
Salvation
Ähnliche Themen
-
In Batch-datei Parameter übergeben
Von Angelika_25 im Forum Sonstige SprachenAntworten: 0Letzter Beitrag: 13.02.09, 10:07 -
return wert an batch übergeben
Von naeko im Forum Sonstige SprachenAntworten: 0Letzter Beitrag: 30.06.08, 10:06 -
[Batch] Per Batch Textzeile auslesen und Verbindung testen?
Von overreaction im Forum Sonstige SprachenAntworten: 1Letzter Beitrag: 15.03.08, 20:18 -
Batch-Parameter übergeben mit ProcessBuilder
Von roontafloor im Forum JavaAntworten: 0Letzter Beitrag: 03.07.07, 15:20 -
Verzeichnisnamen auslesen, in eine dropdownliste einfügen und an variable übergeben
Von mesp2201 im Forum PHPAntworten: 1Letzter Beitrag: 19.03.07, 08:28





Zitieren

Login





