tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
737
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Salvation Salvation ist offline Rookie
    Registriert seit
    May 2011
    Beiträge
    6
    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
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    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.

  3. #3
    Salvation Salvation ist offline Rookie
    Registriert seit
    May 2011
    Beiträge
    6
    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
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Zitat Zitat von Salvation Beitrag anzeigen
    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
    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?
    Zitat Zitat von Salvation Beitrag anzeigen
    Jedoch ist das %I wohl falsch. Bekomme diese Meldung: "I" ist syntaktisch an dieser Selle nicht verarbeitbar.
    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.

  5. #5
    Salvation Salvation ist offline Rookie
    Registriert seit
    May 2011
    Beiträge
    6
    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.
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Zitat Zitat von Salvation Beitrag anzeigen
    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.
    Siehe z.B. http://www.adminbox.de/2010/batch-ku...g-umleitungen/
    Zitat Zitat von Salvation Beitrag anzeigen
    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.
    Vermutlich mußt du erstmal das Verzeichnis wechseln. (pushd)
    Zitat Zitat von Salvation Beitrag anzeigen
    Zudem läuft das Programm scheinbar sechs mal durch.
    Wie kommst du darauf?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    Salvation Salvation ist offline Rookie
    Registriert seit
    May 2011
    Beiträge
    6
    Was ein son kleines '>' Ding schon macht. Habs ausgebessert

    Zitat Zitat von deepthroat Beitrag anzeigen
    Vermutlich mußt du erstmal das Verzeichnis wechseln. (pushd)
    Okay, hier stoß ich grade ein wenig an meine Grenzen, aber ich lese mich da mal durch.


    Zitat Zitat von deepthroat Beitrag anzeigen
    Wie kommst du darauf?
    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]
     

  8. #8
    Salvation Salvation ist offline Rookie
    Registriert seit
    May 2011
    Beiträge
    6
    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
     

  9. #9
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Zitat Zitat von Salvation Beitrag anzeigen
    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.
    Versuch mal rmdir.
    Zitat Zitat von Salvation Beitrag anzeigen
    Was das pushd angeht, komme ich damit gar nicht weiter. Zumindest die Versuche verlaufen sich irgendwie.
    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?
    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
    Gruß
    Salvation bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  10. #10
    Salvation Salvation ist offline Rookie
    Registriert seit
    May 2011
    Beiträge
    6
    Hi,

    passt. Funktioniert.
    Vielen lieben Dank.

    Salvation
     

Ähnliche Themen

  1. In Batch-datei Parameter übergeben
    Von Angelika_25 im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 13.02.09, 10:07
  2. return wert an batch übergeben
    Von naeko im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 30.06.08, 10:06
  3. [Batch] Per Batch Textzeile auslesen und Verbindung testen?
    Von overreaction im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 15.03.08, 20:18
  4. Batch-Parameter übergeben mit ProcessBuilder
    Von roontafloor im Forum Java
    Antworten: 0
    Letzter Beitrag: 03.07.07, 15:20
  5. Antworten: 1
    Letzter Beitrag: 19.03.07, 08:28