Zip entpacken, löschen, Autohotkey

Hallo @ all
Stehe mal wieder auf’n Schlauch.

Ich habe mir einen Einzeiler zum .zip entpacken gemacht.
Über das Kontexmenü (Shift + F10)
wird der Entpackvorgang angeschoben.
Das klappt auch ganz gut.

Nach dem entpacken wird die Zip Datei inaktiv. Da der Entpackvorgang ja unterschiedlich lange dauert, ist das ja auch gut so.

Nur kann ich sie dann nicht mehr automatisch löschen lassen.

Nun meine Frage.
Kann AHK den Entpackvorgang beobachten?

Also, wenn das Entpacken fertig ist, die. zip Datei löschen.

Einer eine Idee wie ich das umsetzen kann?
In dem Ordner wo entpackt wird liegen ggf.
auch noch andere .zip Dateien.

Also:
File Delete, C:\Test*.zip löscht alles.

Die noch nicht Entpackten sollen natürlich nicht gelöscht werden. :slight_smile:
Weiter arbeiten soll auch möglich sein.
Der Curser soll nicht auf der Zip ruhen.

Vielleicht hat das ja schon mal einer von euch gemacht und kann mir da weiterhelfen.

Danke für alles.
NeuDropper

P. S.
Bei If Abfragen bitte ein Beispiel geben.

hi,

was immer das auch heißen mag.

umständlich, oder?

Warum das entpacken nicht mit RunWait direkt starten?
Das löst imo all deine Probleme.

AHK verleitet natürlich etwas, Maus und Tasten zu benutzen um wie ein Mensch zu den gewünschten Stellen zu navigieren. Aber das beschränkt auch sehr.

Auch mit IfWinExist könnte sich was basteln lassen, wenn der Name des Fensters eindeutig ist.
Das hätte aber mehr Übungscharakter, würde ich denken.

grüße
lipi

Hallo lipi
Danke das du dich so schnell gemeldet hast.

Die Datei ist nicht mehr blau hinterlegt.
Also inaktiv. (nennt man doch so, oder?)

Das sind gute Ideen .
Mal schauen ob ich damit umgehen kann.
Melde mich dann nochmal.
Gruß NeuDropper

namd,

‚nicht markiert‘ würde ich verständlicher finden als inaktiv.

das ist aber genau, was ich meinte. Das ist am Ende aller Tage viel zu umständlich.
Maus und Tastatureingaben würde ich nur simulieren, wenn es anders nicht geht oder wenn es einfach genug dafür ist (also einmalige Aktionen).

Besser wäre es, den Dateinamen in einer Variable abzulegen, dann hat man ihn auch für später.

Bei Winrar wäre es sehr einfach: https://documentation.help/WinRAR/HELPCmdD.htm

grüße
lipi

Hallo lipi
Habe mir das ganze mal angeschaut und ausprobiert, und wie du dir denken kannst habe ich es nicht hinbekommen.

Kannst du bitte mein Script so erweitern das da eine Abfrage reinkommt und nach dem entpacken die Zip oder Rar gelöscht wird?
Es reicht mir völlig aus mit F10.
Das funktioniert auf Win 10+11.

z.B.
Wenn eine Rar/Zip Datei angeklickt wird :

  • entpacken dahin wo die Datei liegt
  • nach dem entpacken die Datei löschen in den Papierkorb (ist glaube ich Standard)

#NoEnv
#SingleInstance force
setworkingdir, %A_scriptdir%
e::
Send +{F10}{Down 2}{Enter}{Down 4}{Enter}
Return

Vielleicht hast du ja auch ganz was anderes bei dir rum liegen.

Gruss
NeuDropper

hi,

ja eben nicht :wink:

Das sind Lösungen, die erstmal einfach beginnen.
Aber sobald es komplexer wird (entpacken und löschen) wird es umständlich.

Das Script kennt den Dateiname nicht. Schon Scheiße.

Schau mal: das ist doch viel kürzer:

	Send ^c
	ClipWait			
	RunWait tar.exe -xf %Clipboard%	
	FileRecycle, %Clipboard%

Vorsicht aber bitte. Mir fehlt gerad die Zeit mir Gedanken zu machen, ob da was böses passieren könnte.

grüße
lipi

Hallo lipi
Danke für die Hilfe
Der Code klappt aber nicht.
Es wird die Datei zwar in die Clipboard kopiert aber nur eine 1kb grosse Datei zurück gegeben.
Die Datei in der Clipboard wird nicht entpackt.

Das FileRecycle, %Clipboard% habe ich mal raus genommen.
Erst mal das entpacken hin bekommen. :slight_smile:

Noch eine Idee?

Gruss
NeuDropper

hi,

"%clipboard%" mal versuchen, liegt vielleicht am Format des Dateinamens.
Oder du versuchst mal eine Datei im kurzen Format. Damit wüsste man es letztlich auch.

Ansonsten prüf auch, ob du die tar.exe hast.
Alternativ kannst du ja auch jedes andere Programm dafür nehmen, was sich per Befehlszeile bedienen lässt.

grüße
lipi

Hallo lipi
Leider funktioniert es nicht.
Weder die Kleinschreibung noch das ändern des Dateinamens hat irgendetwas bewirkt.
Die tar.exe ist standardmäßig bei win 10 (nach Update) +11 (generell) mit dabei und auch vorhanden.
Liegt im System32 Ordner.

Ich schaue mir das andere mal an.
Aber ob ich damit klar komme, naja. :slight_smile:

Ich melde mich wieder.

Danke dir erstmal, bis hierhin.

Gruss
NeuDropper

klein? die Änderung waren die Anführungsstrichelchen, damit der Dateiname, der durch %clipboard% eingefügt wird, eben darin eingefasst ist und auch bei einem Leerzeichen noch als zusammenhängend gewertet wird.

Beispiel: wenn der Befehl wäre: tar.exe [-opt] [Filename] [Destination]
Dann wäre

tar.exe -fx c:\Eine Zip Datei.zip

die Datei c:\Eine und die Ordner, wo es hin soll Zip , was natürlich falsch wäre.
Das ist bei AHK etwas relaxt gelöst und sieht für den ersten Moment daher komisch aus.

Hab’s eben mal getestet, bei mir geht’s. Mit Leerzeichen versagt die erste Version jedoch.

das wundert mich. im 8.3-Format geht bei mir auch der erste Versuch.
hast du irgendwas anderes verbockt?
Die Zuweisung der Taste vergessen oder ähnliches? Das war ja nur der Schnipsel um den es ging und nicht das komplette Skript.

Sonst pack in jede 2. Zeile eine Debugmeldung. Sonst sucht man sich ja dusselig, wenn man keinen Anhaltspunkt hat.

grüße
lipi

Hallo lipi

Da es bei mir, mit deiner Hilfe, nur bedingt funktioniert hören wir hier besser auf.
Ich habe nur Probleme und als Novize weiß ich auch nicht wo ich anfangen soll.
Ich habe es unter Win 11 mit tar.exe am laufen bekommen.
Aber nur weil ich %clipboard% in %ClipBoard% umgeschrieben habe.
Als ich dann eine 120 MB grosse Datei entpackt habe, hat er nach 75% aufgehört zu entpacken.
Das gleiche bei einer 90 MB grossen.
Bei 79 MB aufgehört.

Das habe ich 6x gemacht.
Mit umschreiben, Leerstellen entfernt oder nur 1 Wort, es blieb immer der gleiche Effekt.

Danach hat es gar nichts mehr geklappt.
Es ging für eine Sekunde die Eingabeaufforderung auf und danach wieder zu.
Die tar.exe hat gar nicht mehr gestartet.
Ich habe am Code nichts geändert.
Nur die Dateinamen umgeschrieben, und auf einmal ist nichts mehr passiert.

Das geht ohne Wissen nicht zu schaffen.
Das Wissen muss ich mir auf Kommandoebene erst aneignen.

So wie es jetzt ist ist es zwar umständlich aber es funktioniert.

e::
Send +{F10}{Down 2}{Enter}{Down 4}{Enter}
Return

Du hast mir einen Weg gezeigt der komfortabeler und schneller sein kann.

Danke dafür.

Gruss
Tropy

P. S.
Falls dir noch was einfallen sollte wie man eine „nicht markierte“ Datei unter AHK markieren kann, so dass ich sie mit Delete löschen kann, bitte melden.

hi,

Beitrag 1 gilt weiter. Da steht ein möglicher Weg schon, den du anfangs wolltest.

Tastatureingaben kann man eher selten 1:1 auf andere Systeme übertragen. Ich würde den Punkt „alle Extrahieren…“ verwenden, wenn es schon sein muss. Da bleibt die Datei markiert. Ich würde aber schätzen, das bringt nicht viel weiter. Das merkst du aber dann gleich.

Ohne zu wissen, das du aus den Hilfestellungen gemacht hast, ist gar keine Hilfe möglich.
Ob Clipboard groß oder klein, oder sogar CLipBoArD geschrieben wird, ist imo komplett wurschd.
Daher auch unverständlich, warum sich bei dir dann etwas ändert.

Wo du die Prozentangaben her nimmst, weiß ich auch nicht. Bei mir bleibt das entpacken komplett ohne jegliche Ausgabe.

Ich tappe im dunkeln.

grüße
lipi

Versuch es mal in der Richtung.
Dann solltest du bei debug = 1 auch sehen, was beim entpacken nicht klappt.

#NoEnv
#SingleInstance force

debug = 1

!A::				

    	Send ^c
    	ClipWait
      tmp := Clipboard
      if debug 
         MsgBox ZWA: %tmp%
      if FileExist(tmp)
         {  if debug  
              MsgBox ... ist eine Pfadangabe.
           
        if debug {
         runwait cmd.exe /K tar.exe -xvf "%tmp%"   
         }
        else  {      
         RunWait tar.exe -xf "%tmp%"
        
         if ErrorLevel { 
           MsgBox Fehler beim entpacken.
            return  
             }
             }
              
      
          if debug 
           { msgbox Datei wäre nun gelöscht -> Debug on
               }
          else {
              FileRecycle, %tmp%
              if debug                        ;der Ordnung wegen ;)
                MsgBox Datei gelöscht.
                }
                   }
        else MsgBox Das scheint keine Datei zu sein.

Return