PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe mit XP Batch Datei bitte


haferflocken
2009-08-02, 11:43:13
Ich versuche für 7-Zip eine Batch Datei zu schreiben, die folgendes tun soll:

Ich ziehe ein Archiv auf die Batch Datei. Nun wird das Archiv in dem selben Ordner wie das Archiv entpackt.

Dazu nutz ich 7z.exe, die command line Version von 7-Zip.

Ich bekam es aber nicht hin und daher hab ich eine vereinfachte Version versucht (Archiv wird im 7Zip Ordner entpackt), die so aussieht:

@echo off
7z.exe e %1

Die Batchdatei ist im selben Ordner wie 7Zip. Ich ziehe nun ein Archiv auf die Batch datei und nichts passiert, kein Entpacken. Warum?

wenn ich

C:\Programme\7-Zip\7z.exe e %1

schreibe wird die Datei in meinem Home Verzeichnis entpackt. Warum?

wenn ich

7z.exe e "D:\zsnesw142n.zip"

schreibe, wird die Datei erwartungsgemäß im 7Zip Ordner entpackt.

Ich brauche aber etwas um die Datei im Ordner des Archivs zu entpacken. Dazu brauche ich %1 um den ersten Parameter auszulesen.

Könnt ihr mir helfen? Ich sitze schon unglaubliche 3 Stunden an dem Problem.

Gast
2009-08-02, 12:20:21
Hi haferflocken,

in den Eigenschaften der Verknüpfung zu der Batchdatei musst du den Paramater "%1" auch übergeben, in der Form:

...PFADzurBatch/Batch.bat %1

sollte dann funktionieren

Gruß

haferflocken
2009-08-02, 12:56:01
Hi haferflocken,

in den Eigenschaften der Verknüpfung zu der Batchdatei musst du den Paramater "%1" auch übergeben, in der Form:

...PFADzurBatch/Batch.bat %1

sollte dann funktionieren

Gruß

Fehlanzeige :( Soweit ich verstanden habe ist %1 standardmäßig sowieso die Variable, die den ersten Parameter enthält, der übergeben wird.

MooN
2009-08-02, 14:29:38
C:\Programme\7-Zip\7z.exe e %1 -o %~dp1 *

So?

haferflocken
2009-08-02, 14:39:49
geht auch nicht

MooN
2009-08-02, 14:44:30
Setz mal ein Echo davor und eine Pause ans Ende der Batch. Und dann paste mal die Ausgabe des Echos.

EDIT:
Mal abgesehen davon: warum nutzt du nicht einfach das Kontextmenü? Dort sollte 7zip doch mit all diesen Optionen schon eingetragen sein.. :confused:

haferflocken
2009-08-02, 14:59:33
Ausgabe ist:

C:\Programme\7-Zip\7z.exe e D:\zsnesw142n.zip -o D:\ *


EDIT:
Mal abgesehen davon: warum nutzt du nicht einfach das Kontextmenü? Dort sollte 7zip doch mit all diesen Optionen schon eingetragen sein.. :confused:

Weil es mir keine Ruhe mehr lässt.

Uhrsprünglich wollt ich einfach jeden Download mit dem Batch File azzozieren, damit alles automatisch entpackt wird. Aber wie gesagt, jetzt geht es mir einfach nur darum zu schaun was schief läuft, weil es einfach nicht sein kann dass man sowas einfaches nicht im Batch File hinbekommt.

edit: ich schieb das archive direkt auf das batch file. das mit dem shortcut glaubt man glaub ich nicht. oder?

MooN
2009-08-02, 15:10:36
Okay.
Ich sehe gerade, der * am Ende kann wohl weg und die Leerstelle zwischen -o und dem Zielpfad wohl auch.
D.h.:C:\Programme\7-Zip\7z.exe e %1 -o%~dp1
Ist damit vorhin einfach garnix passiert oder wurde uns falsche Verzeichnis entpackt oder was ganz anderes?
Denn eigentlich hätte zumindest das Entpacken funktionieren müssen.

haferflocken
2009-08-02, 15:29:41
OK mit

C:\Programme\7-Zip\7z.exe e %1 -o%~dp1

funktioniert alles :) Danke!

Mit

echo C:\Programme\7-Zip\7z.exe e %1 -o %~dp1 *

wurd nichts entpackt. ich hab nochmal windows suche gemacht. nichts irgendwohin entpackt worden

Also Problem gelöst trotzdem :)

haferflocken
2009-08-02, 15:33:25
Ah noch eine Frage habe ich. Momentan wird nur das _im_ Archiv entpackt. Aber wenn im Archiv jetzt viele Dateien auf der ersten Ebene sind, dann würde ich schon gerne die in einen Ordner tun. Kann man das irgendwie umsetzen? Also 1 Datei -> so wie jetzt und bei mehreren noch einen Ordner?

MooN
2009-08-02, 16:12:20
Wenn es einen Gott gibt, wird er mich dafür töten.. (ungetestet!):
@echo off
set /a cnt=0
for /f %%i in ('C:\Programme\7-Zip\7z.exe l %1') do (
set /a cnt+=1
)

if %cnt%==1 GOTO ONEFILE
GOTO MOREFILES

:ONEFILE
C:\Programme\7-Zip\7z.exe e %1 -o%~dp1
exit


:MOREFILES
mkdir %~dp1%~n1 && C:\Programme\7-Zip\7z.exe e %1 -o%~dp1%~n1
exit

Da ich kein 7zip installiert habe, weiß ich nicht wie die Ausgabe von C:\Programme\7-Zip\7z.exe l %1 aussieht. Evtl musst du also den Counter bei der Initialisierung erhöhen.