Top-Themen

Aktuelle Themen (A bis Z)

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 Dateien mit SendTo zippen

Mitglied: ahstax

ahstax (Level 2) - Jetzt verbinden

21.01.2011 um 13:09 Uhr, 4740 Aufrufe, 8 Kommentare

Mehrere markierte Dateien in einem beliebigen Ordner sollen gezippt und mit einem Passwort verschlüsselt werden.

Hallo miteinander,

ich würde gerne eine, zwei oder mehrere viele markierte Dateien mittels der SendTo-Funktion (rechte Maustaste) einer Batch übergeben und die Dateien dann von dieser zippen lassen. Als Software zum Zippen verwende ich 7zip. Für eine einzige Datei funktioniert das mit folgendem Code:

01.
@echo off 
02.
set DateiMitPfad=%1 
03.
cls 
04.
echo. 
05.
echo. 
06.
set /p ZipName=Bitte Name der zu erzeugenden ZIP-Datei eingeben: 
07.
cls 
08.
echo. 
09.
echo. 
10.
set /p Passwort=Bitte Verschluesselungs-Passwort eingeben: 
11.
cls 
12.
"%programfiles%\7-zip\7Zip_Command_Line\7za.exe" a -tzip "%userprofile%\desktop\%ZipName%.zip" %DateiMitPfad% -p%Passwort% 
13.
net send %username% Fertig!

Nur bei mehreren Dateien, da klappts nicht... Es wird bei verwendung des vorstehenden Codes immer nur die Datei gezippt, die mit der rechten Maustaste angeklickt wurde, um den SendTo-Befehl auszuführen.

Deswegen hab ich mich mal bei Google usw "um"gelesen und meine neu gewonnenen Weisheiten in folgendem Code zusammengetragen:

01.
@echo off 
02.
 
03.
if %1. == . exit 
04.
set PARAMS=file:///%1 
05.
:loop 
06.
shift 
07.
if %1. == . goto send 
08.
set PARAMS=%PARAMS%,file:///%1 
09.
goto loop 
10.
:send 
11.
 
12.
for /f "delims=file:///" %%a in (%params%) Do ( 
13.
	echo "dies ist %%a" 
14.
15.
 
16.
cls 
17.
echo. 
18.
echo. 
19.
set /p ZipName=Bitte Name der zu erzeugenden ZIP-Datei eingeben: 
20.
cls 
21.
echo. 
22.
echo. 
23.
set /p Passwort=Bitte Verschluesselungs-Passwort eingeben: 
24.
cls 
25.
"%programfiles%\7-zip\7Zip_Command_Line\7za.exe" a -tzip "%userprofile%\desktop\%ZipName%.zip" %DateiMitPfad% -p%Passwort% 
26.
net send %username% Fertig!
Ich hab ja gehofft, dass es einfach würde...
Aber ne...
Folgende Probleme:
  1. Wird nur eine, drei, fünf (ungerade Anzahl) Datei(en) markiert, läuft der Code zwar durch und erstellt eine Zip-Datei, die ist aber leer.
  2. Sind mehr als eine Datei markiert, läuft der Code stockend. Er erkennt nach "goto loop" eine Pause, die m.E. doch erst viel Später sein sollte...?
  3. Sind zwei, vier, sechs (eine gerade Anzahl von) Dateien markiert, bricht der Code (kurz) nach "goto loop" ab.
  4. die Zeile
    01.
     echo "dies ist %%a" 
    erzeugt die Aussage, dass die Datei, deren Pfad in %%a liegt, nicht gefunden werden kann. Allerdings nur ein mal...

Sieht jemand einen/mehrere/die Fehler?
Wie könnte ich das eleganter angehen (sollte aber eine Batch bleiben)?

Ich freu mich jetzt schon auf Antworten. Bis dahin Danke schonmal!!!
Grüße,
Andreas
Mitglied: 76109
21.01.2011 um 13:59 Uhr
Hallo ahstax!

Den Shift darfst Du erst nach dem "set PARAMS=%PARAMS%,file:///%1" machen, weil der Shift ja sonst zuvor schon die nächste Variable in %1 reinschiebt.

Gruß Dieter
Bitte warten ..
Mitglied: bastla
21.01.2011 um 14:35 Uhr
@Dieter
"shift" ist ok (siehe Zeile 4)
Grundsätzlich sollte das mit der Variablen %PARAM% klappen (falls es nicht zu viele Dateien bzw zu lange Pfade werden):
01.
@echo off & setlocal 
02.
if %1.==. goto :eof 
03.
 
04.
set PARAMS=%1 
05.
:loop 
06.
shift 
07.
if %1.==. goto send 
08.
set PARAMS=%PARAMS% %1 
09.
goto :loop 
10.
 
11.
:send 
12.
cls 
13.
echo. 
14.
echo. 
15.
set /p ZipName=Bitte Name der zu erzeugenden ZIP-Datei eingeben: 
16.
echo. 
17.
echo. 
18.
set /p Passwort=Bitte Verschluesselungs-Passwort eingeben: 
19.
cls 
20.
echo "%programfiles%\7-zip\7Zip_Command_Line\7za.exe" a -p%Passwort% "%userprofile%\desktop\%ZipName%.zip" %PARAMS% 
21.
net send %username% Fertig!
Entspannter lässt sich das Ganze allerdings unter Verwendung einer temporären Datei abwickeln:
01.
@echo off & setlocal 
02.
if %1.==. goto :eof 
03.
 
04.
set Liste=%temp%\ZIPList.lst 
05.
>%Liste% echo %1 
06.
:loop 
07.
shift 
08.
if %1.==. goto send 
09.
>>%Liste% echo %1 
10.
goto :loop 
11.
 
12.
:send 
13.
cls 
14.
echo. 
15.
echo. 
16.
set /p ZipName=Bitte Name der zu erzeugenden ZIP-Datei eingeben: 
17.
echo. 
18.
echo. 
19.
set /p Passwort=Bitte Verschluesselungs-Passwort eingeben: 
20.
cls 
21.
echo "%programfiles%\7-zip\7Zip_Command_Line\7za.exe" a -p%Passwort% "%userprofile%\desktop\%ZipName%.zip" @%Liste% 
22.
del %Liste% 
23.
net send %username% Fertig!
Beide Ansätze sind übrigens ungetestet ...

Nachtrag: Wenn die test- (und zeilen-) weise Ausgabe der Dateien gewünscht ist, im ersten Fall
for %%i in (%PARAMS%) do echo %%i
bzw in Variante 2 einfach
type %Liste%
- jeweils gefolgt von
pause
- nach der ":send"-Zeile einfügen.

Grüße
bastla
Bitte warten ..
Mitglied: ahstax
21.01.2011 um 15:59 Uhr
Hallo und Danke!

leider funktioniert das mit dem Sammeln nicht...
ich hab mal noch folgenden Weg probiert, scheitere aber am "%"...
Gibts dafür ne Lösung?

01.
rem @echo off 
02.
set Anzahl=0 
03.
 
04.
rem Dateiname abfragen 
05.
cls 
06.
set /p ZipName=Bitte Name der zu erzeugenden ZIP-Datei eingeben: 
07.
rem Passwort abfragen 
08.
cls 
09.
set /p Passwort=Bitte Verschluesselungs-Passwort eingeben: 
10.
 
11.
for %%i in (%*) do ( 
12.
	rem call :Zaehler 
13.
	call :ZaehlerUndZipper 
14.
15.
goto :ende 
16.
 
17.
:ZaehlerUndZipper 
18.
set /a Anzahl+=1 
19.
Set DateiNummer=^&;%Anzahl% 
20.
echo %DateiNummer% 
21.
"%programfiles%\7-zip\7Zip_Command_Line\7za.exe" a -tzip "%userprofile%\desktop\%ZipName%.zip" %DateiNummer% -p%Passwort% 
22.
goto :eof 
23.
 
24.
:ende
Grüße,
Andreas
Bitte warten ..
Mitglied: ahstax
21.01.2011 um 16:49 Uhr
So, doch gelöst...

01.
@echo off & setlocal 
02.
 
03.
if %1.==. goto :eof 
04.
 
05.
set Liste=%temp%\ZIPList.txt 
06.
>%Liste% echo %1 
07.
:loop 
08.
shift 
09.
if %1.==. goto send 
10.
>>%Liste% echo %1 
11.
goto :loop 
12.
 
13.
:send 
14.
cls 
15.
echo. 
16.
echo. 
17.
echo. 
18.
echo. 
19.
set /p ZipName=Bitte Name der zu erzeugenden ZIP-Datei eingeben: 
20.
echo. 
21.
echo. 
22.
set /p Passwort=Bitte Verschluesselungs-Passwort eingeben: 
23.
 
24.
for /f "tokens=*" %%A in (%Liste%) do ( 
25.
	Set DateiBezeichnung=%%A 
26.
	"%programfiles%\7-zip\7Zip_Command_Line\7za.exe" a -tzip "%userprofile%\desktop\%ZipName%.zip" %%A -p%Passwort%  
27.
28.
del %Liste% 
29.
net send %username% Die ausgewaehlte(n) Datei(en) wurden auf Ihrem Desktop dem verschluesselte Archiv %ZipName%.zip hinzugefuegt.
Der Vollständigkeit halber:
hier bekäme man die Datei 7za.exe (ich übernehme natürlich keine Garantie für die Datei/en, den/die Anbieter dieser usw... man kennt das ja...)

Danke auf jeden Fall für die Hinweise!!!!
Schönes Wochenende


Andreas
Bitte warten ..
Mitglied: bastla
21.01.2011 um 18:31 Uhr
Hallo ahstax!

Das Sammeln sollte eigentlich doch funktionieren - und vielleicht klappt ja das Zippen, wenn aus Zeile 21 (oder aus Zeile 20 der ersten Variante) das Test-"echo" (sorry, hatte vergessen, darauf hinzuweisen, dass ich den Befehl nur anzeigen lassen wollte ) entfernt wird ...

Grüße
bastla
Bitte warten ..
Mitglied: ahstax
22.01.2011 um 08:27 Uhr
Ave Bastla,

wird ein "BEfehl", vor dem "echo" steht, lediglich angezeigt und nicht ausgeführt? An und für sich wäre das ja logisch... und mir nicht aufgefallen... Ich probiers nochmal aus.

Hilfreich war in jedem Fall das "drüber Reden"...!

Grüße,
Andreas
Bitte warten ..
Mitglied: bastla
22.01.2011 um 09:07 Uhr
Hallo ahstax!
wird ein "BEfehl", vor dem "echo" steht, lediglich angezeigt und nicht ausgeführt?
So ist es, wobei in der Anzeige Variablen bereits "aufgelöst", also durch ihren Wert ersetzt, sind - daher verwende ich ein solches "echo" schon fast automatisch für "kritische" Befehle (umbenennen, verschieben, löschen von Dateien - wäre hier aber nicht unbedingt nötig gewesen) ...

Grüße
bastla
Bitte warten ..
Mitglied: Alforno
05.07.2011 um 14:49 Uhr
@ahstax

Vielen Dank für das Skript, hat mir gerade sehr weitergeholfen.

mfg
Alforno
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Automatisch dateien die sich in einem Ordner befinden, zippen

Frage von cdm1970Batch & Shell6 Kommentare

Hallo, ich habe folgende Frage: Ich habe in mehrere Ordner sehr viele .html Dateien für unsere Online Shop. Ich ...

Windows 8

SendTo unter Windows 8 erweitern

Tipp von holli.zimmiWindows 84 Kommentare

Hier ein kleiner Tipp, wie man das "SendTo" bzw. "Senden an" unter Windows 8 erweitert. Um sein "Senden an" ...

Batch & Shell

Dateien mit fast gleichem Namen per Batch zippen

Frage von tiolocoBatch & Shell5 Kommentare

hallo, ich bin neu hier und ein absoluter laie was solche dinge betrifft. hab auch versucht evtl. eine lösung ...

Batch & Shell

Zippen von Dateien in Variablen Verzeichnissen - geschachtelte FOR-Schleife

gelöst Frage von misterjoBatch & Shell5 Kommentare

Hallo zusammen, Das ist mein erster Eintrag hier. Ich hoffe, dass ihr mir helfen könnt. Ich habe folgende Ausgangssituation: ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 17 StundenWindows 103 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 20 StundenAdministrator.de Feedback14 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Network
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Network15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Memory Cards
Vergessliche USB-Sticks?
Frage von hanheikMemory Cards14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...