115129
Goto Top

Rar-Unrar mit Kommandozeilenparameter

Hallo zusammen,

ich bräuchte einen Code, der mir folgendes Abarbeitung soll:

Übergabe per Kommandozeilenparameter:
z.B. I:\Backup\B2016\452-0001-IN.rar
(Es können auch andere Archivendungen vorkommen wie .rar / .r01 / .r09 / etc.)

Funktionalität:
1.0 Prüfe den übergebenen Pfad "I:\Backup\B2016" auf:
1.1 Ob Rar- oder Zip-Archive enthalten sind.
1.2 Ob ein von ca. 10 definierte Schlagwörter an der Stelle von "\Backup\" übereinstimmen.
-> Falls ok, entpacke "I:\Backup\B2016\452-0001-IN.rar" nach "I:\Backup" und bennene den entpackten Dateinamen um wie der Verzeichnisname. (Z.B. "I:\Backup\B2016.bak")
1.3 Lösche Verzeichnis "I:\Backup\B2016".
2.0 Prüfe den übergebenen Pfad "I:\Backup\B2016" auf:
2.1 Ob ein von ca. 10 definierte Schlagwörter an der Stelle von "\Backup\" übereinstimmen. (Nicht die gleichen Schlagwörter wie bei 1.2)
-> Falls ok, packe den gesamten Inhalt von "I:\Backup\B2016" nach "I:\Backup\B2016.rar". Wenn Inhalt jedoch größer als 2GB ist, erstelle 2GB große Teilarchive.
2.2 Lösche Verzeichnis "I:\Backup\B2016".


Wäre jemand so nett mir unter die Arme zu greifen?
Habe mich selbst schon dran versucht, das Skript hat mir ein Archiv entpackt aber nicht dorthin wo ich wollte...

Wäre eine andere Programmiersprache für meine gewünschte Anwendung sinnvoller?

Schöne Osterfeiertage face-smile

SG,
Blattlaus

Content-Key: 300197

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

Ausgedruckt am: 28.03.2024 um 23:03 Uhr

Mitglied: Pjordorf
Pjordorf 26.03.2016 um 22:35:22 Uhr
Goto Top
Hallo,

Zitat von @115129:
ich bräuchte einen Code, der mir folgendes Abarbeitung soll:
Also eine Wunschbestellung

das Skript hat mir ein Archiv entpackt aber nicht dorthin wo ich wollte...
Wie war das Skript? Dort hast du vermutlich einen falschen Parameter verwendet.

Wäre eine andere Programmiersprache für meine gewünschte Anwendung sinnvoller?
Wir kenne ja noch nicht einmal deine jetzt verwendete Programmiersprache....

Gruß,
Peter
Mitglied: 115129
115129 27.03.2016 um 00:16:00 Uhr
Goto Top
Hallo,

Also eine Wunschbestellung
Klingt nicht so gut, jedoch trifft es drauf zu...

Wie war das Skript? Dort hast du vermutlich einen falschen Parameter verwendet.
Habe das Skript bereits gelöscht. Werde mich aber nochmal damit auseinandersetzen und dieses dann hier preisgeben...

Wir kenne ja noch nicht einmal deine jetzt verwendete Programmiersprache....
Batch, deshalb habe ich auch den Thread unter "Batch&Shell" eröffnet.

Falls weitere Informationen benötigt werden, bitte kurz Anfragen.
Danke.

Gruß,
Blattlaus
Mitglied: 115129
115129 28.03.2016 um 00:41:13 Uhr
Goto Top
Hallo zusammen.

Entpacke ich ein Rar-Archiv mit diesem Script...
@echo off
for %%i in ("%~1\..") do set "Name=%%~nxi"  
for %%i in ("%~1\..\..") do set "Directory=%%~nxi"  
echo .log|D:\WinRAR\unrar.exe x %~1 %~d1\%Directory%\
ren %~d1\%Directory%\ %~n1 %Name%
...wird die entpackte Datei an den richtigen Ort entpackt, aber nicht umbenannt.

Entpacke ich ein Rar-Archiv mit diesem Script...
@echo off
for %%i in ("%~1\..") do set "Name=%%~nxi"  
for %%i in ("%~1\..\..") do set "Directory=%%~nxi"  
echo .log|D:\WinRAR\unrar.exe x %~1 %~d1\%Directory%\
ren %~d1\%Directory%\ %~n1 %Name%
del %~1
wird nichts entpackt und folglich auch nichts umbenannt.


Was mache ich an der Stelle falsch?
Gibt es Möglichkeiten in den Ablauf was einzusetzen, um zu warten bis die Datei entpackt ist, danach umbenennen und dann das Rar-Archiv zu löschen?

Danke für eure Hilfestellung face-smile

Gruß,
Blattlaus
Mitglied: Pjordorf
Pjordorf 28.03.2016 um 01:30:33 Uhr
Goto Top
Hallo,

Zitat von @115129:
Was mache ich an der Stelle falsch?
Mach dein @echo Off mal weg damit du siehst was passiert. Ordner passen alle? Enabledelayedexpansion?
Batch Anfänger Fragen zu setlocal, enabledelayedexpansion, set, for

Gibt es Möglichkeiten in den Ablauf was einzusetzen, um zu warten bis die Datei entpackt ist, danach umbenennen und dann das Rar-Archiv zu löschen?
Klar. z.B. ein "ping 127.0.0.1 -n 10" (ergibt eine ca. 10 sekunden pause)

Sicher das dein Code jeweils anders ist (nein, nicht dein "del %~1")?

Gruß,
Peter
Mitglied: 115129
115129 29.03.2016 um 19:39:21 Uhr
Goto Top
Hallo Peter,


Mach dein @echo Off mal weg damit du siehst was passiert. Ordner passen alle? Enabledelayedexpansion?
Die Batchdatei wird von einem externen Programm gestartet. Während der Abarbeitung bleibt diese unsichtbar, somit bringt mir "@Echo off" nichts.
Die Ordner passen, da das Rar-Archiv dorthin entpackt wird wo ich möchte.
Nur die entpackte Datei %~n1 wird nicht umbenannt nach %Name%:

@echo off
for %%i in ("%~1\..") do set "Name=%%~nxi"  
for %%i in ("%~1\..\..") do set "Directory=%%~nxi"  
echo .log|D:\WinRAR\unrar.exe x %~1 %~d1\%Directory%\
ren %~d1\%Directory%\ %~n1 %Name%

Weitere Frage:
Unter %~1 wird z.B. I:\Backup\B2016\452-0001-IN.rar dem Batchskript übergeben. In dem Pfad I:\Backup\B2016\ befinden sich teilweise Unterverzeichnisse...können diese ignoriert werden?


Klar. z.B. ein "ping 127.0.0.1 -n 10" (ergibt eine ca. 10 sekunden pause)
Diese Möglichkeit ist mir bekannt. Mir wäre jedoch lieber, dass das Batchskript den "Dearchivierungsvorgang läuft" erkennt und erst bei Fertigstellung der Dearchivierung das Skript weiter abarbeitet.


Gruß,
Blattlaus
Mitglied: Pjordorf
Pjordorf 29.03.2016 um 22:48:22 Uhr
Goto Top
Hallo,

Zitat von @115129:
Die Batchdatei wird von einem externen Programm gestartet
Und?.

Nur die entpackte Datei %~n1 wird nicht umbenannt nach %Name%:
Mit @echo Off siehst du ob dein REN angendet wird, mach dahinter ein Pause zum in ruhe Lesen können. Dein uns genanntes Programmschnipsel kann aber auch alleine laufen, da braucht es kein Programm drum herum was alles ausblendet, inklusive Fehler.

ren %~d1\%Directory%\ %~n1 %Name%
Sicher das hier nicht dein Fehler liegt?

Unter %~1 wird z.B. I:\Backup\B2016\452-0001-IN.rar dem Batchskript übergeben. In dem Pfad I:\Backup\B2016\ befinden sich teilweise Unterverzeichnisse...können diese ignoriert werden?
Du übergibst keinen Pfad sondern einen Dateinamen, da gibt es dann keine Unterverzeichnisse....

Diese Möglichkeit ist mir bekannt.
Dann nutze es oder ein Sleep (extern)

Mir wäre jedoch lieber, dass das Batchskript den "Dearchivierungsvorgang läuft" erkennt
Und, wie meinst du das Batch dies erkennen könnte. Mit anderen Hochsprachen könnte da schon eher... aber es ist BATCH.

und erst bei Fertigstellung der Dearchivierung das Skript weiter abarbeitet.
Tut dein Programmschnipsel doch....

Gruß,
Peter