1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[Batch] Suche und Extrahieren in Dateiestruktur

Dieses Thema im Forum "Sonstige Sprachen" wurde erstellt von error_on, 15. November 2013.

  1. error_on

    error_on Mitglied

    Ich will von einem Fileserver gepackte Dateien holen und diese auf einem anderen Server in eine Datestruktur entpacken.

    Ich habe in die einer Textdatei das ungefähre Schema der Datei aufgeschrieben, welche gesucht wird.
    So suche ich z.B. vom Server folgende Datei:
    Y:\SystemA\file_123_201306.xls
    In meiner Textdatei steht also drin:
    SystemA\file_123 (Das Datum ist variabel und kann von mir beim Ausführen des Programms festgelegt werden)

    Ich möchte jetzt aus dem String, der in der Datei ist, SystemN zwischenspeichern und die Datei in den Ordner SystemN entpacken (SystemN hängt von der Textdatei ab (SystemA, SystemB, etc.).

    Da ich den ganzen Dateinamen leider nicht in der Liste speichern kann (es gibt auch file_123_4123_201306 die auch entpackt werden muss, etc) weiß ich nun leider nicht mehr weiter.

    Was ich bisher habe, sind 2 for Schleifen, die Erste liest die Textdatei aus und speichert sich das Dateinamenmuster, die zweite Schleife sucht nach dem Dateimuster und entpackt die Datei.

    Wenn ich nun eine dritte Schleife einbau, die sich das Token zieht, dann findet er keine Datei mehr (The System cannot find the file ...)

    Hier mein Ansatz:
    Code (Text):
    1. ::%target% ist der Server (Z:)
    2.     for /f "delims=" %%i in (%liste%) do (
    3.         for /f "tokens=1 deliums=\" %%j in (%%i) do (
    4.             for %%s IN ("%path%\%%i*%timestamp%*") do (
    5.    
    6.                 echo 7za e %%s -o%target%\%%j
    7.                
    8.             )
    9.         )
    10.     )
    Kleiner Edit: Wenn ich statt in %%i in %liste% suche, dann hab ich das Problem, dass er mir pro Listeneintrag alle Systeme ausgibt.
     
    Zuletzt bearbeitet: 15. November 2013
  2. error_on

    error_on Mitglied

    Ok, war wohl etwas zu umständlich, nachdem ich das ganze etwas umgeschrieben hab, hats funktioniert.

    Für die die es interessiert, so sieht es "besser" aus und funktioniert:
    Code (Text):
    1.         for /f "tokens=1,2* usebackq delims=\" %%i in (%liste%) do @(
    2.                
    3.             for %%s IN ("%path%\%%i\%%j*%timestamp%*") do (
    4.                 7za e %%s -o%target%\%%i
    5.             )
    6.        
    7.         )
     
Die Seite wird geladen...