Batch-Script - TCL Variableübergabe mit rar-Archivierungsablauf (mit Teilfunktion)

M

MONGi

Gast
Guten Abend Community,

ich versuche ein Batch-Script zu erstellen, welches mir leider Probleme bereitet und hoffe hier in diesem Forum die nötige Hilfe zu erhalten.


Das Script soll folgendes Abarbeiten:

1. Ein TCL-Script startet das Batch-Script und übergibt eine Variable (komplette Pfadangabe zu einer Datei)
Beispiel:
I:/Bilder.2002/Bilder.2002-01-02/Bu.img.tF-029.nef
I:/Bilder.2002/Bilder.2002-01-02/Bu.img.tF-030.nef
J:/Bilder.2009/Bilder.2009-01-24/Img.rK-001.nef
J:/Bilder.2009/Bilder.2009-01-25/Img-0081.1-001.nef
J:/Videos/Ferien.1989-03-05/Vid.kn-183.mp4
etc.

2. Das Batch-Script soll nun als Beispiel an dem Pfad (I:/Bilder.2002/Bilder.2002-01-02/Bu.img.tF-029.nef) das Verzeichnis (Bilder.2002-01-02), also mit samt dem kompletten Inhalt mit WinRAR nach (K:/Bilder.2002/Bilder.2002-01-02.rar) archivieren und falls das rar-Archiv größer als 2GB ist, teilen/splitten.
Egal welcher Pfad vom TLC-Script übergeben wird, es wird stets nach K:/... archiviert.


Mein derzeitiger Code sieht wie folgt aus:
Code:
@echo on & setLocal
for %%i in ("%~1\..") do set "Name=%%~nxi"
for %%i in ("%~1\..\..") do set "Verzeichnis=%%~nxi"
for /d %%i in ("%~1\*.*") do "D:\WinRAR\rar.exe" a -v2000000 "K:\%Verzeichnis%\%Name%.rar" "%%i"
echo %Verzeichnis% > "C:\log-Verzeichnis.txt"
echo %Name% > "C:\log-Name.txt"
echo %~1 > "C:\log-kompletter-Pfad.txt"

"log-Name" gibt aus:
Bilder.2002-01-02

"log-Verzeichnis" gibt aus:
Bilder.2002

"log-kompletter-Pfad" gibt aus:
I:/Bilder.2002/Bilder.2002-01-02/Bu.img.tF-029.nef


...soweit scheint alles in Ordnung zu sein, zumindest aus der Sicht eines Laien...das dumme ist nur, es wird nichts archiviert!?


Kann jemand den Fehler entdecken?

Vielen Dank schonmal für jegliche Hilfestellungen.

SG,
Mongi
 
Zuletzt bearbeitet von einem Moderator:
miac schrieb:
Sehe ich das falsch oder hast Du in Zeile 4 K: vorgegeben?

Hallo Miac,

ja das habe ich, weil das Laufwerk K:/ immer das Ziellaufwerk sein soll.

Wäre das falsch?

Gruß,
Mongi

EDIT: Nach einer Google-Abfrage bin ich auf was gestoßen und habe es entsprechend geändert, allerdings archiviert mir das Script dennoch nichts...

@echo on & setLocal
set /p LW=K:
for /d %%i in ("%~1\..") do set "Name=%%~nxi"
for /d %%i in ("%~1\..\..") do set "Verzeichnis=%%~nxi"
for /d %%i in ("%~1\*.*") do "D:\WinRAR\Rar.exe" a -v2000000 "%LW%\%Verzeichnis%\%Name%.rar" "%%i"
echo %Verzeichnis% > "C:\log-Verzeichnis.txt"
echo %Name% > "C:\log-Name.txt"
echo %~1 > "C:\log-Pfad.txt"

Zur Info, die "echos" kommen am Schluss wieder raus, sollen mir nur helfen was ausgegeben wird.
 
Zuletzt bearbeitet von einem Moderator:
Ich hab es nur sehr schnell überflogen, aber existiert denn das Verzeichnis auf K: überhaupt? Es kann sein das Winrar damit nicht klar kommt und du die Fehlenden Verzeichnisse selber erstellen musst, damit du dann dort das Archiv erstellen kannst.

Hast du mal getestet ob der Winrar Befehl außerhalb des Batches funktioniert?
 
Müsste in Zeile 4 die Parameterübergabe direkt an die "" des exe Aufrufes erfolgen?

in etwa so:
Code:
for /d %%i in ("%~1\*.*") do "D:\WinRAR\Rar.exe a -v2000000 %LW%\%Verzeichnis%\%Name%.rar %%i"
siehe auch hier
 
Hallo zusammen,

@urki:
Laufwerksbuchstabe K:\ inklusive erses Verzeichnis, wohin archiviert werden soll existiert.
Werde heut Abend zu Hause ("%~1\*.*") und "D:\WinRAR\Rar.exe" a -v2000000 "%LW%\%Verzeichnis%\%Name%.rar" per echo auslesen, ich versuchs mal zumindest.
Bin leider kein Batch-Profi :p

@bieneneber:
Dein vorgeschlagenen Code werde ich ebenfalls heute Abend testen, mal sehen ob es zu einem anderen Ergebnis kommt.

Vielen Dank für Eure Hinweise, werde mich heute Abend nochmal melden.

Gruß,
Mongi
Ergänzung ()

Hallo zusammen,

ich habe wie oben beschrieben mit dem Befehl "echo" die Strings ausgelesen, es scheint das Problem ist gefunden aber nicht gelöst :p

Übergeben wurde: I:/Bilder.2002/Bilder.2002-01-02/Bu.img.tF-029.nef

echo "%~1\*.*" > "C:\log-STRING1.txt"
Ergebnis: "I:/Bilder.2002/Bilder.2002-01-02/Bu.img.tF-029.nef\*.*"
Sollte lauten: I:/Bilder.2002/Bilder.2002-01-02/*.* (Inhalt dieses letzten Verzeichnisses archivieren mit dem Namen "Bilder.2002-01-02")

echo "%LW%\%Verzeichnis%\%Name%.rar" > "C:\log-STRING2.txt"
Ergebnis: "\Bilder.2002\Bilder.2002-01-02.rar"
Sollte lauten: K:/Bilder.2002/Bilder.2002-01-02.rar

Wer weis Rat?

Vieeelen Dank.

Gruß,
Mongi
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben