concurve
Goto Top

Per Batch Winrar entpacken - Probleme bei Pfad

Hallo zusammen,

die unten gezeigte Batch soll in einem bestimmten Ordner nach *.zip und *.rar suchen und diese dann in ein entsprechendes Verzeichnis entpacken, soweit so gut, bei den *.zip-Files funktioniert alles super ... Einzig beim Zuweisen eines Ziel-Pfades für die "unrar"-Funktion habe ich Probleme.

Alle entpackten Daten aus den *.rar-Files werden ausschließlich in den Ordner gespeichert, in dem ich die *.bat ausführe - egal was ich statt ["%inc%\" "%%f"] sonst eintrage?!

Da ich mir den Code auch nur zusammenkopiert/gebastelt habe und nicht wirklich verstehe, wäre es toll wenn sich das mal einer ansehen könnte und mir sagt, was genau ich hier falsch gemacht habe.

set root=%~dp0
set data=%~dp0report\
set inc=%~dp0report\entpackt\speziell\
set inr=%~dp0report\entpackt\
set bin=%~dp0exe\
 
for %%f in (%data%*.zip) do (
  set "name=%%~nxf"  
  if /i "!name:~-7!" == "xxx.zip" (  
    "%bin%7z" e -y -o"%inc%" "%%f"  
  ) else (
    "%bin%7z" e -y -o"%inr%" "%%f"  
  )
)

for %%f in (%data%*.rar) do (
  set "name=%%~nxf"  
  if /i "!name:~-7!" == "xxx.rar" (  
    "%bin%unrar" x -y -o-"%inc%\" "%%f"  
  ) else (
    "%bin%unrar" x -y -o-"%inr%\" "%%f"  
  )
)


Danke
gruß
Con

Content-ID: 320218

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

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

MrCount
Lösung MrCount 07.11.2016 um 11:10:10 Uhr
Goto Top
Servus,

also so wie ich das sehe, hast du bei unrar einen Fehler bei den Parametern und einen Backslash zu viel.

Versuche mal

"%bin%unrar" x -y "%%f" "%inc%"  
bzw
"%bin%unrar" x -y "%%f" "%inr%"  
Concurve
Concurve 07.11.2016 um 11:55:06 Uhr
Goto Top
Super, herzlichen Dank für die Antwort ... nun passt alles!

Gruß
Con
Concurve
Concurve 08.11.2016 um 12:19:47 Uhr
Goto Top
Hallo noch einmal,

nun habe ich doch noch eine Frage zur Funktion, die aufgrund der aktuellen Bearbeitung der Daten entstanden ist. Die zu entpackenden Daten sind aufgrund ihrer unglaublichen Anzahl an kleinen Datensätzen in Summe einfach zu groß (36GB) um sie "mal eben schnell" zu bearbeiten.

Kann man in der oben benannten Funktion auch gleich eine Art Sortierung mit einbauen, die ausschließlich die neueste Datei innerhalb einer *.rar oder einer *.zip entpackt?

Um dem ganzen nun noch die Krone aufzusetzen, ist es möglich das ich ggf. eine "von Datum bis Datum" Zeitspanne benennen kann und mit dann nur die Datensätze je *.rar oder *.zip entpackt werden?

... das würde das Volumen um ein Vielfaches verringern.


ich habe zwar eine ähnliche Funktion hier gefunden ...

@echo off & setlocal
set source=F:
set target=G:
for /f "tokens=* delims=" %%a IN ('dir /B /S /A-D /O-D "%source%\*.bkf"') DO @(  
  echo Kopiere "%%a" nach "%target%" ...  
  copy "%%a" "%target%" & goto :end  
)
:end

Neueste Dateien Per Batch kopieren

... nur bin ich leider unfähig sie einzubauen.

Hier meine aktuelle *.bat
set root=%~dp0
set datapacked=%~dp0report\raw\
set unpackedspez=%~dp0report\entpackt\speziell\
set unpacked=%~dp0report\entpackt\
set exe=%~dp0exe\

for %%f in (%datapacked%*.zip) do (
  set "name=%%~nxf"  
  if /i "!name:~-7!" == "xxx.zip" (  
    "%exe%7z" e -y -o"%unpackedspez%" "%%f"  
  ) else (
    "%exe%7z" e -y -o"%unpacked%" "%%f"  
  )
)

for %%f in (%datapacked%*.rar) do (
  set "name=%%~nxf"  
  if /i "!name:~-7!" == "xxx.rar" (  
    "%exe%unrar" x -y "%%f" "%unpackedspez%"  
  ) else (
    "%exe%unrar" x -y "%%f" "%unpacked%"  
  )
)

FOR /R %datapacked% %%I IN (*.r*;) DO del /s %%I
FOR /R %datapacked% %%I IN (*.z*;) DO del /s %%I

pause


Das wäre super wenn hier noch einmal jemand einen Tipp für mich hat.

Gruß
Con
MrCount
MrCount 08.11.2016 um 13:25:28 Uhr
Goto Top
Du kannst dir ja mal die Parameter von unrar.exe anschauen.
unrar.exe /?


Hier sind z.B. folgende Parameter (Schalter) interessant:
  ta<Datum>     Nur Dateien verarbeiten, die nach <Datum> (Format JJJJMMTTSSMMSS) geändert wurden
  tb<Datum>     Nur Dateien verarbeiten, die vor <Datum> (Format JJJJMMTTSSMMSS) geändert wurden
  tn<Zeit>      Nur Dateien neuer als <Zeit> verarbeiten
  to<Zeit>      Nur Dateien älter als <Zeit> verarbeiten
Concurve
Concurve 08.11.2016 um 13:51:28 Uhr
Goto Top
Hallo und vielen Dank!

Das ist ja super, somit kann ich mir für *.rar etwas zusammenbauen (werde ich mal versuchen ... außer es gibt unten aufgezeigte Möglichkeit).
Wenn ich 7z /? eingebe kommt leider nichts. Hat 7z derartige Funktionen nicht oder geht da das "/?" einfach nur nicht?


Ungeachtet der oberen Abfrage-Möglichkeit ...
Meine Daten, welche ich entpacken möchte sind alle wie folgt aufgebaut (vielleicht hilft das noch einmal weiter):

876952476_161108030558.ext

876952476 = Seriennummer
16 = Jahr
11 = Monat
08 = Tag
03 = Uhrzeit [hh]
05 = Minute [mm]
58 = Sekunde [ss]

Kann ich damit nicht auch eine Abfrage machen

1. Abfrage = lediglich die aktuellste Datei innerhalb einer *.zip oder *.rar
2. Abfrage = von Datum bis Datum

Es wäre großartig wenn Du hier vielleicht noch einen Vorschlag hast, andernfalls werde ich die obere Funktion einmal versuchen, allerdings brauche ich auch die *.zip-Datei, andernfalls habe ich nur 50% meiner Daten.

Ich hoffe ich verlange nicht zu viel und bedanke mich schon einmal im Voraus für einen guten Hinweis.

Gruß
Con
MrCount
MrCount 08.11.2016 um 16:12:59 Uhr
Goto Top
Versuchs mal mit:
7z.exe -?


Allerdings habe ich dort keinen Parameter gefunden, der nach Datum sortieren lässt, wie bei RAR.
Concurve
Concurve 09.11.2016 um 05:28:53 Uhr
Goto Top
Hallo und danke ... ich werde mal sehen was ich dazu noch finden kann. Vielleicht besteht ja doch die Möglichkeit mit der Namensgebung der Datensätze zu arbeiten.
Sobald ich hierzu etwas gefunden habe werde ich mich noch einmal melden und die Ergebnisse hier kurz aufzeigen, dann können damit auch andere arbeiten.

Gruß
Con