30407
Goto Top

Batch nach zip-datei kopieren

Hi

ich würde gerne ein Batchprogramm schreiben, dass sich in alle Zip-Dateien in eínem bestimmten Ordner selbst reinschreibt bzw. sich als neue Batchdatei an alle Zip-dateien anfügt. Ist sowas möglich ?
Ich habe schon folgende Code gefunden:

echo for %%f in (*.zip ..\*.zip) do start /m winzip32 -a /%%f

Jedoch weis ich werder ob noch wie der funktioniert. Bitte um Hilfe !

Gruss Inkognitar

Content-Key: 32908

Url: https://administrator.de/contentid/32908

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: Biber
Biber 20.05.2006 um 20:38:02 Uhr
Goto Top
Moin Inkognitar,

ich würde gerne ein Batchprogramm schreiben, dass sich in alle Zip-Dateien in eínem bestimmten Ordner selbst reinschreibt
bzw. sich als neue Batchdatei an alle Zip-dateien anfügt. Ist sowas möglich ?
Ja. Alles außer Brotschneiden ist möglich als Batch.

Ich habe schon folgende Code gefunden:
echo for %%f in (*.zip ..\*.zip) do start /m winzip32 -a /%%f
Bitte umweltgerecht entsorgen, wenn der ohne Kommentare und Erläuterung auf den Boden irgendeines Forums gerotzt wurde.

Jedoch weis ich werder ob noch wie der funktioniert. Bitte um Hilfe !
Dann als Tipp zum richtigen Herangehen an solche Aufgaben:
1. Sortieren.
a) Was ist der Plan/die Idee?
In Deinem Fall: Okay, Idee ist da. Auch gut erklärt.
b) Was habe ich/weiß ich? Was brauche ich noch, was muss ich ermitteln?
Du hast Zip-Dateien.
Hast Du auch ein Zip-Programm, dass vom CMD-Prompt bedienbar ist?
Kennst Du dessen Parameter?
Dann können wir loslaufen. Vorher ist es eigentlich albern.

Zu dem Fund-Schnipsel oben...
Die Zeile oben abgeschickt bewirkt genau folgendes:
$cmd$Testit.bat echo for %%f in (*.zip ..\*.zip) do start /m winzip32 -a /%%f
for %f in (*.zip ..\*.zip) do start /m winzip32 -a /%f
...also nur die Ausgabe der zweiten Zeile.

Gemeint war aber folgende (richtige) Ansatz
...wende auf alle *.zip-Dateien in diesem und im darüberliegenden Verzeichnis an, was nach dem DO geschrieben steht.

Das wäre also vom CMD-Prompt aus wie folgt:
(ich beschränke es mal auf das aktuelle Verzeichnis. Anwenden auf das übergeordnete Verzeichnis ist Dönekens praxisfern.)
$cmd$ For %f in (*.zip) Do whatever -parameter_vom_whatever %f

Je nachdem welches Zip-Programm Du verwendest, würde bei Dir also die am CMD-Prompt abzuschickende Zeile beispielsweise lauten
Syntax-Beispiel für winzip:
[pfad\]winzip32 [ [-min] action [options] Zipdatei ZuArchivierendeDatei(en)
$cmd$For %f in (*.zip) Do winzip32 -min -a %f meineBatDatei.bat
In einem Batch müsstest Du jeweils die %-Zeichen in zwei Prozentzeichen ändern. (%%f statt %f)

Such bitte erstmal die Konsolen-Parameter Deines Zippers raus oder zumindest die Versionsnummer Deines Zip-Programms.

Gruß
Biber
Mitglied: 30407
30407 20.05.2006 um 22:54:12 Uhr
Goto Top
@ Biber:

Erst einmal Danke für deine schnelle Antwort. Außerdem tut es mir leid, wenn mein Thread nicht dem Standardformat bzw. Standardbedingungen gleicht.
Jedoch was meinst du mit $cmd$ ?
Wie sieht das in einer batch aus?
so :

@echo off
cd C:\test
For %%f in (*.zip) Do winzip32 -min -a %%f meineBatDatei.bat

Was meinst du mit Versionnummer bzw. warum ist die wichtig ?
Ich habe Winzip32.


Bzgl. "in batch ist alles möglich", kann ich nur sagen, dass "mailto" glaube ich nicht mehr geht.
Mitglied: Biber
Biber 20.05.2006 um 23:19:10 Uhr
Goto Top
Moin Inkognitar,
Jedoch was meinst du mit $cmd$ ?
So sieht mein Standard-Prompt aus. Bei Dir steht vielleicht "C:\Dokumente und Einstellungen\Inkognitar>" oder so.
Soll nur zeigen, dass Das nicht zur eigentlichen Befehlszeile gehört.

Wie sieht das in einer batch aus?
so :

@echo off
cd C:\test
For %%f in (*.zip) Do winzip32 -min -a %%f meineBatDatei.bat


Ja, im Prinzip schon. Allerdings würde ich entweder
- wenn Du in einem Batch das Verzeichnis wechselst, danach den vorherigen Zustand wieder herstellen (mit PopD/PushD)
- oder das Verzeichnis nicht wechseln, sondern das Vertzeichnis in der Klammer angeben [ "....(c:\test\*zip) Do ..."]

Was meinst du mit Versionnummer bzw. warum ist die wichtig ?
*Seufz* Die ist wichtig, weil bei WinZip bis einschließlich Version 9.0 die Befehlszeilen-Parameter undokumentiert waren.
Ab Version 10.0 ist das über ein Extra-Commandline-Aufsatz machbar (und dokumentiert).
Ich habe Winzip32.
Dann schau doch mal unter "Info", welche Version das ist bitte.
Wenn 10.0, dann schau bitte auf www.winzip.com nach, da gibt es irgendwo ein Commandline-Tool zum Download.
Bei den Winzip-Versionen bis 9.0 kenne ich die Befehlszeilenoptionen und die, die Du brauchst, habe ich im ersten Posting angegeben.

Gruß
Biber
P.S.
Bzgl. "in batch ist alles möglich", kann ich nur sagen, dass "mailto" glaube ich nicht mehr geht.
Wieso sollte das nicht gehen?? *gg
Aber zum Mailen nehme sogar ich meistens so ein Klicki-Bunti-Kram mit Buttons und Adressbüchern und mehreren Eingabebereichen.
Mitglied: 30407
30407 21.05.2006 um 00:39:24 Uhr
Goto Top
Wie sieht der Vollständig Code mit Verzeichnis in Klammern aus ?
so:

@echo off
For %%f in (c:\test\*.zip) Do winzip32 -min -a %%f meineBatDatei.bat


Sry, aber die Methoden PopD bzw. PushD sagen mir garnichts.


Mein Winzip: Version 9.0 SR-1

zu mailto:
Das soll noch gehen ? Wie ? Mit Server ? Bitte um Code bzw Verbesserung :

@echo off
start Mail.to=anybody@web.de
Mail.Subject=test-mail
Mail.Body= Ist jemand Zuhause ?
Mitglied: Biber
Biber 21.05.2006 um 01:18:23 Uhr
Goto Top
a) Ja, Batch sollte so funktionieren mit WinZip 9.0.
Eventuell noch die Pfadangabe zur Winzip32.exe ergänzen, z.B. "C:\Programme\Winzip\Winzip32.exe" schreiben.
b) PushD und PopD siehe Hilfe am CMD-Prompt (PushD /? und PopD /?)
PushD verzeichnis wechselt in ein Verzeichnis; PopD stellt den Vor-Zustand wieder her
c) mailto gehört in einen eigenen Thread.
Würde mit
$cmd$start mailto:anybody@web.de?Subject=test-mail^&Body=Ist jemand Zuhause ?
...gehen.
Aber im Batch würde man/frau etwas Passenderes wie z.B. Blat.exe (siehe Forumssuche oder Suchmaschine) verwenden.

Gruß
Biber
Mitglied: 30407
30407 21.05.2006 um 10:56:00 Uhr
Goto Top
zu a)

Könntest du das mit einem Beispiel machen ?
Denn der Befehl:
For %%f in (c:\test\*.zip) Do winzip32 -min -a %%f meineBatDatei.bat
funktioniert bei mir nicht. Es kommt eine Fehlermeldung die sagt, dass winzip32 nicht gefunden werden konnte bzw. der Befehl falsch sei.

zu c)

dann werde ich mal einen neuen Thread aufmachen.

Gruss Inkognitar

PS: Kennst du auch den Befehl für Winrar ?
Mitglied: Biber
Biber 21.05.2006 um 12:56:00 Uhr
Goto Top
Moin Inkognitar,

Stimmt, mein Fehler, das hab ich vergessen in meiner ersten Antwort beim Thema "Was muss ich ermitteln?".
Der Pfad zum Zip-Utility muss auch ermittelt werden, weil dieser auf CMD-Ebene nicht bekannt gegeben wurde; nur für Windows-Programme ist "winZip" oder "Winrar" ein bekanntes Programm, das ohne Pfadangabe gefunden werden kann.
Das heißt, ein "start Winzip" oder "start WinRar" funktioniert ohne Pfadangabe, aber ohne den Umweg über "Start" musst Du den Pfad angeben.

Also, ermitteln wir mal den Pfad zur Winzip32.exe....wieder viele Möglichkeiten,

a1) mit Klicki-Bunti über den Desktop-Link
wenn Du WinZip installiert hast, wird Dir eigentlich auf dem Desktop eine Verknüpfung angelegt.
Wenn das bei Dir so ist: Mit rechter Maustaste das Kontextmenü öffnen, unter "Eigenschaften" steht der Pfad zur WinZip32.exe.
Also so etwas wie "C:\Programme\WinZip90\WINZIP32.EXE". Diesen String musst Du dort einsetzen, wo jetzt "winzip32" in Deiner *.Bat Steht.

a2) Oder über den Menüpunkt "Suchen" im Startmenü
So, wie M$ es wohl vorgesehen hat, ....nach Winzip32.exe suchen.... kurze Zeit später bekommmst Du angezeigt, wo die Winzip32 liegt.
Pfad merken oder Abtippen.

-oder-

b) Vom Cmd-Prompt aus ermitteln mit "dir /s /b \winzip32.exe" und Path in der Batch eintragen
-oder-
c) im Batch ermitteln und da eine Variable "WinZip" oder "Winrar" mit dem kompletten Pfad setzen.


Parameter von WinRar

Da hatte wir letztens ein oder zwei Threads zu dem Thema - solltest Du über die Forumssuche mit "Winrar Batch" finden.

Dir Parameter stehen alle in eine ausführlichen deutschen Doku namens Rar.txt im WinRar-Verzeichnis
Also, wieder am CMD-Prompt "dir /s /b rar.txt" eingeben, dann findest Du die.

Zusammengefasst solltest Du vom CMD-Prompt aus Dein Ziel erreichen mit

For %f in (c:\test\*.zip) Do C:\Programme\WinZip90\winzip32 -min -a %f meineBatDatei.bat
-oder-
For %f in (c:\test\*.rar) Do C:\Programme\WinRar351\winrar -a %f meineBatDatei.bat

Hope That Helps
Biber

P.S. Die Notwendigkeit für einen Batch sehe ich nach wie vor nicht - gib doch die eine Zeile am CMD-Prompt ein, wenn Du sie brauchst.
P.P.S. Neuer Thread für "Mail senden per Batch" ist auch nur nötig, wenn die Forumssuche Deine Fragen nicht beantwortet. Blat.exe wurde auch schon öfters beschrieben hier.
Mitglied: 30407
30407 21.05.2006 um 13:24:09 Uhr
Goto Top
Hi,
ich habe es versucht, jedoch kam bei mir folgende Fehlermeldung:

Aktion: Dateien hinzufügen (ggf. ersetzen) Untergeordnete Ordner einbeziehen: Ja Vollständige Pfadangaben: Nein
Warnung: Keine Übereinstimmung bei: meineBatDatei.bat
Fehler: Für diese Aktion wurden keine Dateien mit diesem Kriterium gefunden - Nichts zu tun! (c:\test\test.zip)

Woran kann das liegen ? Liegt es vielleicht daran das ich keine registrierte Version habe ? Außerdem eine Winzip32.exe gibt es in meinem Verzeichnis(C:\Programme\WinZip) nicht, nur einen Winzip32.zip.
Mitglied: Biber
Biber 21.05.2006 um 13:46:10 Uhr
Goto Top
Tja,
sieht so aus, als hätte er die "meineBatDatei.bat" nicht gefunden.
Dann gibt es wohl keine Datei dieses Namens in dem Verzeichnis, in dem die *.zip-Dateien sind.
Also gib von der *.bat-Datei, die Du in alle Zip-Archive einfügen willst, auch den vollständigen Namen an, z.B. "C:\Test\MeineBatDatei".

Du musst es schon erst einmal vom CMD-Prompt zum Laufen bringen, bevor Du es in der Batchdatei hinterlegst.
In der Batchdatei, die ja sich selbst in die Archive kopieren soll, wenn ich es richtig verstanden habe, kannst Du dann nach dem Testen schreiben:
For %%f in (c:\test\*.zip) Do C:\Programme\WinZip90\winzip32 -min -a %%f %~dpnx0
Die Variable %~dpnx0 liefert den vollständigen Pfad und Dateinamen der gerade gestarteten *.bat-Datei, e.g. "c:\test\meineBatDatei.bat"

Gruß Biber
Mitglied: 30407
30407 21.05.2006 um 14:59:51 Uhr
Goto Top
Danke, es hat funktioniert !

Jedoch noch 3 Fragen :
1. Bei dieser Aktion öffnet sich ein Winzip-Menü (wo auswählen muss ob ich weiterhin die testversion benutzen will). Kommt das bei der Vollversion auch (bzw. ein anderes Fenster) ? Kann man das Fenster automatisch schliessen (Mit tskill winzip32 gehts leider nicht.) bzw. es irgenwie unterdrücken ?
2. Kann ich beim kopieren der batch in ein Ziparchiev den namen der batch ändern ?
3. Der Code: For %%f in (c:\test\*.rar) Do C:\Programme\WinRAR\winrar \-a %%f %~dpnx0
hat bei mir nicht funktiniert. Was mache ich falsch ? Hängt das auch von der Version ab ?

Gruss Inkognitar


PS: Wieso hast du eigentlich einen anderen Pfad für dein Winzip- bzw. Winrarprogramm als ich ?
Mitglied: Biber
Biber 21.05.2006 um 17:21:03 Uhr
Goto Top
Moin Inkognitar,
Danke, es hat funktioniert !
Schön, dass Du so geduldig warst.

Jedoch noch 3 Fragen :
1. ... Kommt das bei der Vollversion auch (bzw. ein anderes Fenster) ?
Nein. Bei der Vollversion kommt es nicht. Und die kosten glaube ich ca. 25 Euro. Soviel ist WinZip mit Sicherheit wert.
Und wenn Du ja offensichtlich öfters ZIP-Dateien verwendest, wäre Registrierung der saubere Weg.

Kann man das Fenster automatisch schliessen bzw. es irgenwie unterdrücken ?
Glaube ich nicht - ich würde es registrieren.
2. Kann ich beim kopieren der batch in ein Ziparchiev den namen der batch ändern ?
Nein - aber natürlich vorher eine Kopie Deiner Batch anlegen unter dem Soll-Namen in Archiv.

3. Der Code: For %%f in (c:\test\*.rar) Do C:\Programme\WinRAR\winrar \-a %%f %~dpnx0
hat bei mir nicht funktiniert. Was mache ich falsch ? Hängt das auch von der Version ab ?
Sorry, da hab ich mich vertan. Bei WinRar wird eine separate Datei namens Rar.exe für Batch/CMD-Betrieb mitgeliefert.
Also:
For %%f in (c:\test\*.rar) Do C:\Programme\WinRAR\rar -a %%f %~dpnx0
Und einen Backslash "\" vor dem "-a" hattest Du zuviel.

Gruß Biber
Mitglied: 30407
30407 21.05.2006 um 17:53:33 Uhr
Goto Top
Hi,

der rar-befehl hat leider nicht funktioniert. Es kam folgende Meldung:


RAR Deutsche Version 3.51 (c) 1993-2005 Alexander Roshal 7.Okt.2005

Shareware Version Geben Sie RAR -? fr Hilfe ein.

Aufruf: RAR <Befehl> -<Schalter 1> -<Schalter N> <Archiv> <Dateien...>
<@Dateiliste...> <Zielverzeichnis\>

<Befehle>
a Dateien zum Archiv hinzufgen
c Archivkommentar hinzufgen
cf Dateikommentar hinzufgen
cw Archivkommentar in Datei schreiben
d Dateien aus Archiv l?schen
e Dateien ins aktuelle Verz. entpacken
f Dateien im Archiv aktualisieren
i[par]=<str> Zeichenkette in Archiv suchen
k Archiv vor Ver?nderung sichern
l[t,b] Archivinhalt auflisten [technisch, blank]
m[f] Ins Archiv verschieben [nur Dateien]
p Datei auf dem Bildschirm ausgeben
r Archiv reparieren
rc Fehlende Teilarchive rekonstruieren
rn Archivierte Dateien umbenennen
rr[N] Wiederherstellungsinf. speichern
rv[N] Rekonstruktions-Archive erzeugen
s[Name|-] Konvertiert in oder von SFX
t Archivierte Dateien berprfen
u Dateien im Archiv updaten
v[t,b] Archivinhalt ausfhrlich auflisten [technisch,blank]
x mit vollst?ndigen Verzeichnissen entpacken

<Schalter>
- Schalterbehandlung abbrechen
ac Archivattribut nach Kompression l?schen
ad Archivnamen an Zielverzeichnisnamen anh?ngen
ag[Format] Archivnamen aus aktuellem Datum erzeugen
ao Dateien mit gesetztem Archivattribut hinzufgen
ap<Verz> Setzt das Verzeichnis innerhalb eines Archiv
as Archivinhalt synchronisieren
av Authentizit?tsinf. hinzufgen (nur registrierte Version)
av- Authentizit?tsberprfung bergehen
c- Kommentare nicht anzeigen
cfg- Konfiguration nicht einlesen
cl Dateinamen in Kleinschreibung konvertieren
cu Dateinamen in Groáschreibung konvertieren
df L?sche Dateien nach der Archivierung
dh Gemeinsam genutzte Dateien ?ffnen
ds Namenssortierung in progressiven Archiven abschalten
e[+]<attr> Dateien mit bestimmten Attributen aus-/einschlieáen
ed Keine leeren Verzeichnisse hinzufgen
en Ende des Archivs nicht kennzeichnen
ep Verzeichnisnamen ausschlieáen
ep1 Stammverzeichnisnamen ausschlieáen
ep2 Auf vollst?ndige Pfadangabe erweitern
ep3 Auf vollst?ndige Pfadangabe incl. Laufwerksbuchstaben erweitern
f Datei(en) auffrischen
hp[Passwort] Dateien und Header verschlsseln
id[c,d,p,q] Anzeigen/Nachrichten abschalten
ieml[Adr] Archiv per Email versenden
ierr Alle Nachrichten an stderr senden
ilog[Name] Fehler in Datei protokolllieren (nur in der Reg.Vers.)
inul Alle Nachrichten unterdrcken
ioff PC nach Beendigung herunterfahren
isnd Ger?usche anschalten
k Archiv vor Ver?nderung sichern
kb Zerst?rte entpackte Dateien nicht l?schen
m<0..5> Kompressionsmethode(0-keine...3-standard...5-maximal)
mc<Param> Erweiterte Kompressionsparameter festlegen
md<Gr?áe> W?rterbuchgr?áe in KB (64,128,256,512,1024,2048,4096 oder A-G)
ms[Erw;Erw] Folgende Dateitypen nicht komprimieren
n<Datei> Nur angegebene Datei archivieren
n@ Zu archivierende Dateinamen von der Standardeingabe lesen
n@<Liste> Nur Dateien aus Dateiliste archivieren
o+ Vorhandene Dateien berschreiben
o- Vorhandene Dateien nicht berschreiben
oc Das NTFS 'Compressed'-Attribut setzen
os NTFS-Datenstr?me speichern
ow Dateibesitzer und Gruppe speichern/setzen
p[Passwort] Passwort setzen
p- Nicht nach Passwort fragen
r Verzeichnisse rekursiv durchsuchen
r0 Unterverzeichnisse fr Wildcards rekursiv durchsuchen
ri<P>[:<S>] Priorit?t (0-std,1-min..15-max) und Ruhezeit in ms einstellen
rr[N] Wiederherstellungsinf. speichern
rv[N] Rekonstruktions-Archive erzeugen
s[<N>,d,e] Progressive (solid) Archive erstellen
s- Progressive Archivierung abschalten
sfx[name] selbstentpackdendes (SFX) Archiv erzeugen
si[name] Daten vom Standardeingabeger?t (stdin) lesen
t Dateien nach dem Archivieren berprfen
ta<Zeit> Nur Dateien verarbeiten, die nach <Zeit> ge?ndert wurden
tb<Zeit> Nur Dateien verarbeiten, die vor <Zeit> ge?ndert wurden
tk Archivzeit beibehalten
tl Zeit der neusten Datei setzen
tn<Zeit> Nur Dateien neuer als <Zeit> verarbeiten
to<Zeit> Nur Dateien ?lter als <Zeit> verarbeiten
ts<m,c,a>[N] Zeitpunkt der letzten ?nderung (m), der Erstellung (c),
des letzten Zugriffs (a) speichern/setzen
u Dateien erneuern
v Teilarchive mit automatischer Gr?áe erstellen oder alle listen
v<Gr?áe>[k,b] Teilarchive mit Gr?áe=<Gr?áe>*1000 [*1024, *1] erzeugen
vd Laufwerksinhalt vor dem Schreiben eines Teilarchivs l?schen
ver[n] Dateiversionskontrolle [Versionsnummer]
vn Teilarchive nach altem Schema benennen
vp Pause vor jedem Teilarchiv
w<Verz.> Arbeitsverzeichnis angeben
x<Datei> Angegebene Datei ausschlieáen
x@ Auszuschlieáende Dateinamen eingeben
x@<Liste> In Dateiliste angegebene Dateien ausschlieáen
y Alle Fragen mit Ja best?tigen
z<Datei> Archivkommentar aus Datei lesen
Mitglied: Biber
Biber 21.05.2006 um 18:39:40 Uhr
Goto Top
Sorry, Inkognitar,

mein Kurzzzeitgedächtnis verhält sich in letzter Zeit wie ein...Dingens..na, dieses Ding mit den Löschenn..egal..

Also: Rar.exe-Parameter zum Datei-In-Archivdatei-packen heißt "a" und nicht "-a".

Also richtiger wäre dieser Befehl, um z.B. die MeinebatDatei.bat in ein Archiv namens testrar.rar zu kopieren:
$cmd$d:\programme\WinRAR\rar.exe a testrar.rar MeineBatDatei.txt

-oder in Deinem Oneliner-
For %%f in (c:\test\*.rar) Do C:\Programme\WinRAR\rar a %%f %~dpnx0

So, haben wir es jetzt?
Ach so, die Frage, wieso die Packer bei Dir in anderen Verzeichnissen stehen als bei mir:
Hängt davon ab,
- wo denn die Umgebungsvariable ProgramFiles hinzeigt ( schau nach mit "set progr" vom CMD-Prompt; ProgramFiles=C:\Programme oder ähnlich kommt raus)
- ob man/frau das vorgeschlagene Inst-Verzeichnis bestätigt oder ändert.

Gruß
Biber
Mitglied: 30407
30407 21.05.2006 um 21:27:03 Uhr
Goto Top
Hi, es funktioniert !
jedoch habe ich noch eine letzte Frage :
Und zwar ist bei vielen, dass Winzip bzw. Winrar Verzeichnis anders --> Mein Programm läuft nur auf meinem PC. Daher würde ich gerne erst das Verzeichnis ermitteln und dann erst die Anwendung starten. Jedoch funktiniert der folgende Code nicht. Ich glaube, es liegt an der Variablendeklaration.

@echo off
set x = dir /s /b \winzip32.exe
set y = dir /s /b \rar.exe
For %%f in (c:\test\*.zip) Do %x% -min -a %%f %~dpnx0
For %%f in (c:\test\*.rar) Do %y% a %%f %~dpnx0 > nul
For %%f in (c:\test\*.zip) Do %y% a %%f %~dpnx0 > nul
Mitglied: Biber
Biber 21.05.2006 um 22:37:30 Uhr
Goto Top
Na, Inkognitar,

soviel Geduld soll auch belohnt werden... da mach ich noch mal mein Schätzkästchen der Profi-Tricks auf *gg

Ich habe ja vorhin schon geschrieben, dass sich mit
start winzip
-bzw-
start winrar

diese beide Zip-Programme finden lassen, weil sie installiert sind und in der Registry mit Namen und Pfaden eingetragen sind.

Mit diesem Wissen kannst Du folgendes in der Batchdatei schreiben:
....
For /f %%i in ('ftype winzip') do Set %%i  
For /f %%i in ('ftype winrar') do Set %%i  
REM Danach steht in der Variablen %winzip% der vollständige Name der WinZip32.exe,; in %WinRar% entsprechend-
If [%winzip%] ==  goto noWinzipHere
For %%f in (c:\test\*.zip) Do %WinZip% -min -a %%f %~dpnx0 
Goto :eof
:noWinZipHere
If [%winRar%] ==  goto noWinRarHere
For %%f in (c:\test\*.rar) Do %WinRar% a %%f %~dpnx0 
:noWinRarHere
echo Kein WinRar und kein WinZip gefunden - Bitte Inkognitar anrufen: 0190-666666
Die beiden Zeilen
set x = dir /s /b \winzip32.exe
set y = dir /s /b \rar.exe
..erfordern eine etwas andere Syntax.
- keine Leerzeichen vor und nach den Gleichheitszeichen
- möglichst nicht x und y nennen. ist zwar erlaubt, aber schwer lesbar und wartbar
- richtiger wäre eine Syntax der Form
for /F %%i in ('dir /s /b \rar.exe') do set winrar=%%i
> ABER: mit DIR suchst Du immer nur auf einem Laufwerk, z.B. C: oder D:
> Das ist der eigentliche Haken - Du weißt ja nicht ob und auf welchem Laufwerk des users WinZip oder WinRar installiert sind.

Der Weg oben ist eleganter... und wenn den Trick nicht weitererzählst, darfst Du ihn gerne nutzen.

Gruß
Biber