Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

7-zip -Pfad nicht korrekt angegeben in der Batch

Frage Entwicklung Batch & Shell

Mitglied: two-ak-two

two-ak-two (Level 1) - Jetzt verbinden

26.12.2012, aktualisiert 29.12.2012, 4150 Aufrufe, 6 Kommentare

Guten Tag,

mein Nick ist two-ak-two.

System
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.
01.
set "AKTPFAD=%cd%" 
02.
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

Mitglied: bastla
26.12.2012, aktualisiert um 18:06 Uhr
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
01.
for %%x in (*) do if exist "%%~x\" echo Verarbeite %%x (Ordnername: "%%~nxx")
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]
Bitte warten ..
Mitglied: two-ak-two
26.12.2012, aktualisiert um 18:20 Uhr
Zitat von bastla:
Hallo two-ak-two und willkommen im Forum!
Danke
Was soll denn eigentlich der Batch bewirken, was ist beim Aufruf im Explorer markiert?
der Batch führt folgendes aus:
im Ordner "Ordner1" sind verschiedene Dateien vorhanden. Dazu zählen Ordner, Text, Archiv usw Dateien.
Ich markiere eine davon und erstelle mit der Batch das Archiv mit dem Namen "Ordner1"
Das Archiv wird im falschen Pfad erstellt aber mit dem richtigen Namen, alle Dateien sind im Archiv gepackt wie gewünscht.
Soferne es, wie es aussieht, um eine Liste von Ordnern ginge, solltest du jeden davon mit
Es ist keine Liste von Ordnern.
01.
for %%x in (*) do if exist "%%~x\") echo Verarbeite %%x (Ordnername: "%%~nxx")
in die Variable "%%x" bekommen und könntest dann in weiterer Folge die passende "7-zip"-Anweisung
Das ist bestimmt gut, ich verstehe es allerdings nicht
dafür basteln ...
bin schon 6 Monate am basteln

Edit:
jetzt habe ich folgendes probiert hinzu gefügt
01.
xcopy %cd%.7z Paket
Es passiert folgendes:
Archiv "Ordner1.7z" wird vom Desktop in den Ordner "C:\%USER%\***\Desktop\Ordner1\Paket" kopiert (nicht das wahre und Konsole wartet auf Eingabe D - Datei oder V -Verzeichnis)

Grüße
bastla
Gruß zurück
Bitte warten ..
Mitglied: bastla
26.12.2012, aktualisiert um 18:56 Uhr
Hallo two-ak-two!
Es ist keine Liste von Ordnern.
Ich markiere eine davon
Dann sollte eigentlich
01.
for /f "delims=" %%i in ("%~1\..") do set "ParentPath=%%~fi" & set "ParentName=%%~nxi" 
02.
if not defined ParentName set "ParentName=Root" 
03.
for %%i in (%*) do "c:\Program Files\7-Zip\7z.exe" a "%ParentPath%\%ParentName%.7z" %%i
besser passen ...

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
Bitte warten ..
Mitglied: two-ak-two
26.12.2012, aktualisiert 01.01.2013
hallo bastla,

mit dem Befehl wird alles aus dem "Ordner1" in ein Archiv gepackt und auf dem Desktop abgelegt und der Name des Archivs ist dann Desktop.7z (war so nicht gedacht).

Ich möchte gerne aus den Ordner, der gerade geöffnet ist, alle Dateien in ein Archiv packen, den Namen des Ordners übernehmen und das Archiv auch da erstellen. Nicht aber auf den Desktop.

Zitat von bastla:
Dann sollte eigentlich
01.
for /f "delims=" %%i in ("%~1\..") do set "ParentPath=%%~fi" & set 
02.
"ParentName=%%~nxi" 
03.
if not defined ParentName set "ParentName=Root" 
04.
for %%i in (%*) do "c:\Program Files\7-Zip\7z.exe" a "%ParentPath%\%ParentName%.7z" %%i
die Zeilen habe ich sonst nirgendwo gesehen, dabei war ich 6 Monate am suchen. Es wird der Absolute Pfad festgelegt, siehe SET Befehl. Offiziel gibt auch keine Lösung, nur bei der 7-zip 9.30 Alpha als switch und da funtioniert es noch nicht Perfekt (Danke @bastla)
1. Deine Batch packt alles, übenimmt den Namen Desktop und legt das Archiv auch dort ab.
wurde erklärt wieso und ist Normal wenn sich der Ordner1 auf dem Desktop befindet.

2.Meine Batch packt alles, übernimmt den Namen des Ordners und legt das Archiv auch auf dem Desktop ab.
kann mann besser lösen

Mir ist klar das mann für diese Aktion auch das 7-zip Kontext Menü benutzen sollte, möchte ich aber nicht.
Es geht auch ganz einfach mit dem Winrar Kontext Menü und einem selbst erstelltem Profil, möchte ich auch nicht.

Mit Batch und CMD ist es super, mann braucht nicht rumklicken, passwort vergeben, Archivart wählen, Archivgröße bestimmen usw.

Danke für deine Zeit

Gruß
two-ak-two
Bitte warten ..
Mitglied: bastla
27.12.2012, aktualisiert um 11:03 Uhr
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
Bitte warten ..
Mitglied: two-ak-two
29.12.2012, aktualisiert 01.01.2013
hallo bastla,
Zitat von bastla:
Hallo two-ak-two!

Ich weiß zwar nicht, wie Du testest,
wie Du, ich teste mit allen verfügbaren Datei Formaten.
  • SendTo Make7z.cmd funktioniert und ein CMD Fenster reicht aus.
  • Verweiß zur Make7z.cmd aus dem Kontext Menü funktioniert nur mit einer Datei.
mehrere Dateien bedeuten mehrere CMD Fenster und Archiv wird manchmal korrekt gepackt, dann manchmal unvollständig.
Shell Erweiterung x64
01.
Windows Registry Editor Version 5.00 
02.
 
03.
[HKEY_CLASSES_ROOT\Folder\shell\Make7z] 
04.
@="°Make7z" 
05.
"Icon"="%ProgramFiles%\\7-Zip\\7zFM.exe,0" 
06.
 
07.
[HKEY_CLASSES_ROOT\Folder\shell\°7zip\command] 
08.
@="\"C:\\Users\\****\\AppData\\Roaming\\Microsoft\\Windows\\SendTo\\Make7z.cmd\" %1"
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.
ja, das funktioniert auch soweit Perfekt, vorausgesetzt:
  • nur eine Datei wird markiert, das geht soweit bis mann alle Dateien durch hat. die werden auch in das Archiv gepackt, also das archiv wird Aktualisiert.
  • wenn mehrere markiert werden und es sind Windows sfx und cab Dateien oder entpackbare Installshield exen vorhanden wird die For schleife abgearbeitet mit Fehlern.
  • Fehler Merkmale "Error Datei ist schon vorhanden" Archiv ist unvollständig oder "Archiv ist existiert schon"
  • Wenn beim 7zip switches im Befehl eingebaut werden geht es in die Hose. Ordner1.7z wird gepackt der unvolständig ist und Ordner1.7z.tmp wird nicht verarbeitet. In dem ist dann der Rest des Archivs.
Verwendete 7-zip switches
01.
-mx0 -v100m -x

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]
ja das stimmt und das hat mich Nerven gekostet bis Du es halt gepostet hast


Grüße
bastla
Gruß zurück


wie schon gesagt, die zwei Zeilen funtionieren Perfekt. Der Nachteil ist das halt alles korrekt in den übergeordnetem Pfad gepackt wird.
  • 1. Zeile ist von dir
  • 2. Zeile, keine Ahnung
  • switches werden verarbeitet
  • das wichtigste -es werden alle Dateien gnadenlos gepackt
Bester Batch mit Kompromiss [EDIT]durch die zusätlichen Zeilen ist es für mich Perfekt[/EDIT]
01.
@echo off 
02.
set "7zNAME=%CD%" 
03.
echo %CD% 
04.
FOR /d %%X in (7zNAME) do "c:\Program Files\7-Zip\7z.exe" a -mx0 -v100m -x!test.txt "%cd%".zip > test.txt && "c:\Program Files\7-Zip\7z.exe" t "%cd%.zip.*" >> test.txt 
05.
move "%cd%.zip.*" "%ParentPath%"
  • "Es werden alle Dateien gepackt, getestet und wieder in den Ursprungspfad verschoben, so wie gewünscht. Dabei werden nur die
.zip
Dateien mit Erweiterung berücksichtigt! Der Name Ordners kann auch z.B. so
Ordner1 Ordner1&Ordner1. Ordner1
benannt werden und das Archiv wird korrekt erstellt
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Winrar entpacken - Probleme bei Pfad (7)

Frage von Concurve zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...