7-zip -Pfad nicht korrekt angegeben in der Batch
Guten Tag,
mein Nick ist two-ak-two.
System
Win7 Home Premium 64 bit
7-zip 9.25 64 bit
Win7 Home Premium 64 bit
7-zip 9.25 64 bit
diese Batch habe ich durch lesen anderer Beiträge von hier und durch Tipps von mehreren Benutzer für mich übernommen. Danke dafür.
Ich benutze diese Batch durch das Kontext Menü, der Verweiß ist zum SendTo Ordner und dort ist die gespeichert (kann mann auch wo anders speichern, denke ich). Mann könnte das auch nach CMD /C als Befehl ausführen, nur ich erkenne aus der Batch gar keinen Syntax und deswegen ist es für mich unmöglich. Wäre aber schön wenn mann den Befehl auch im command Schlüssel eingeben könnte.
Mein Problem ist: Das Archiv wird nicht im Ordner erstellt wo ich mich befinde sondern auf dem Desktop.
Das .tmp Archiv schon, dann wird es zum Desktop kopiert wo auch der Pfad ist der festgelegt wurde damit ich den Namen des Ordners für das Archiv übernehmen kann.
Frühere Batch test Versuche waren erfolgreich aber der Name des Ordners wurde nicht übernommen.
Im 7-zip Syntax finde ich, keine angaben dafür und so kam ich zu der nachfolgenden Doku.
Die Zusammenfassung von >Thomas Glöckler< Interne Befehle der CMD-Shell wurde auch gelesen, danke. Die Logik kann ich nicht zu meinem Vorteil einsetzen, ich vestehe das nur zum teil, als ganzes will es nicht in meine Zentrale. Bin nicht der jüngste, deswegen bestimmt
set "AKTPFAD=%cd%"
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a %cd%.7z
Ich benutze diese Batch durch das Kontext Menü, der Verweiß ist zum SendTo Ordner und dort ist die gespeichert (kann mann auch wo anders speichern, denke ich). Mann könnte das auch nach CMD /C als Befehl ausführen, nur ich erkenne aus der Batch gar keinen Syntax und deswegen ist es für mich unmöglich. Wäre aber schön wenn mann den Befehl auch im command Schlüssel eingeben könnte.
Mein Problem ist: Das Archiv wird nicht im Ordner erstellt wo ich mich befinde sondern auf dem Desktop.
Das .tmp Archiv schon, dann wird es zum Desktop kopiert wo auch der Pfad ist der festgelegt wurde damit ich den Namen des Ordners für das Archiv übernehmen kann.
Frühere Batch test Versuche waren erfolgreich aber der Name des Ordners wurde nicht übernommen.
Im 7-zip Syntax finde ich, keine angaben dafür und so kam ich zu der nachfolgenden Doku.
Die Zusammenfassung von >Thomas Glöckler< Interne Befehle der CMD-Shell wurde auch gelesen, danke. Die Logik kann ich nicht zu meinem Vorteil einsetzen, ich vestehe das nur zum teil, als ganzes will es nicht in meine Zentrale. Bin nicht der jüngste, deswegen bestimmt
Please also mark the comments that contributed to the solution of the article
Content-Key: 196256
Url: https://administrator.de/contentid/196256
Printed on: April 23, 2024 at 21:04 o'clock
6 Comments
Latest comment
Hallo two-ak-two und willkommen im Forum!
Was soll denn eigentlich der Batch bewirken, was ist beim Aufruf im Explorer markiert?
Soferne es, wie es aussieht, um eine Liste von Ordnern ginge, solltest du jeden davon mit
in die Variable "%%x" bekommen und könntest dann in weiterer Folge die passende "7-zip"-Anweisung dafür basteln ...
Grüße
bastla
[Edit] Prüfung auf Ordner vereinfacht [/Edit]
Was soll denn eigentlich der Batch bewirken, was ist beim Aufruf im Explorer markiert?
Soferne es, wie es aussieht, um eine Liste von Ordnern ginge, solltest du jeden davon mit
for %%x in (*) do if exist "%%~x\" echo Verarbeite %%x (Ordnername: "%%~nxx")
Grüße
bastla
[Edit] Prüfung auf Ordner vereinfacht [/Edit]
Hallo two-ak-two!
besser passen ...
Kurze Erklärung: Anhand der ersten übergebenen Datei / des ersten übergebenen Ordners (%1) wird Pfad und Name des Ordners ermittelt (siehe dazu "
Zeile 3 sorgt dafür, dass auch mehrere Dateien / Ordner verarbeitet werden können, indem eine Schleife über alle Übergabeparameter (%* = alle Dateien / Ordner) läuft und jeweils die Datei / den Ordner in das gleiche Archiv packt.
Grüße
bastla
Es ist keine Liste von Ordnern.
Ich markiere eine davon
Dann sollte eigentlichIch markiere eine davon
for /f "delims=" %%i in ("%~1\..") do set "ParentPath=%%~fi" & set "ParentName=%%~nxi"
if not defined ParentName set "ParentName=Root"
for %%i in (%*) do "c:\Program Files\7-Zip\7z.exe" a "%ParentPath%\%ParentName%.7z" %%i
Kurze Erklärung: Anhand der ersten übergebenen Datei / des ersten übergebenen Ordners (%1) wird Pfad und Name des Ordners ermittelt (siehe dazu "
for /?
", gegen Ende der Ausgabe), in welchem sich diese Datei / dieser Order befinden. Sollte dies ein "Root"-Ordner (etwa "D:\") sein, gibt es natürlich keinen Ordnernamen, sodass in Zeile 2 ein Name für diesen Fall festgelegt wird.Zeile 3 sorgt dafür, dass auch mehrere Dateien / Ordner verarbeitet werden können, indem eine Schleife über alle Übergabeparameter (%* = alle Dateien / Ordner) läuft und jeweils die Datei / den Ordner in das gleiche Archiv packt.
Grüße
bastla
Hallo two-ak-two!
Ich weiß zwar nicht, wie Du testest, aber wenn ich meine 3 Zeilen oben (unter W7Pro) als "C:\Users\bastla\AppData\Roaming\Microsoft\Windows\SendTo\Make7z.cmd" speichere, danach in einem Ordner "Ordner1" (Pfad zu diesem Ordner egal) eine Datei markiere und per "Senden an" an den Batch ("Make7z.cmd") übergebe, wird in diesem "Ordner1" eine "Ordner1.7z" erstellt und in dieses Archiv die markierte Datei gepackt - der Desktop ist dabei überhaupt nicht beteiligt.
Dass übrigens auch mehrere Dateien und/oder Ordner in einem Arbeitsgang verarbeitet werden können, ist nur eine zusätzliche Mögichkeit - es kann auch Datei für Datei einzeln auf diese Weise in das Archiv gepackt werden ...
[Edit] Solltest Du allerdings Deinen "Ordner1" auf dem Desktop liegen haben und eben diesen "Ordner1" an den Batch übergeben, ist es natürlich klar, dass dann ein Archiv "Desktop.7z" entsteht, in das der gesamte "Ordner1" gepackt wird. [/Edit]
Grüße
bastla
Ich weiß zwar nicht, wie Du testest, aber wenn ich meine 3 Zeilen oben (unter W7Pro) als "C:\Users\bastla\AppData\Roaming\Microsoft\Windows\SendTo\Make7z.cmd" speichere, danach in einem Ordner "Ordner1" (Pfad zu diesem Ordner egal) eine Datei markiere und per "Senden an" an den Batch ("Make7z.cmd") übergebe, wird in diesem "Ordner1" eine "Ordner1.7z" erstellt und in dieses Archiv die markierte Datei gepackt - der Desktop ist dabei überhaupt nicht beteiligt.
Dass übrigens auch mehrere Dateien und/oder Ordner in einem Arbeitsgang verarbeitet werden können, ist nur eine zusätzliche Mögichkeit - es kann auch Datei für Datei einzeln auf diese Weise in das Archiv gepackt werden ...
[Edit] Solltest Du allerdings Deinen "Ordner1" auf dem Desktop liegen haben und eben diesen "Ordner1" an den Batch übergeben, ist es natürlich klar, dass dann ein Archiv "Desktop.7z" entsteht, in das der gesamte "Ordner1" gepackt wird. [/Edit]
Grüße
bastla