Diese Stapelverarbeitung funktioniert gut, um mehrere Archive in einem Ordner zu erstellen, fügt aber den Stammordner zum Archiv hinzu. Ich möchte, dass nur die Dateien im Stammordner hinzugefügt werden. Dies ist der Code, den ich habe:
for /d %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X"
Antwort1
Sie brauchen nur einfürSchleife, indem Sie den /d
Parameter weglassen, und es funktioniert genauso, wie Sie es beschreiben, wobei die ZIP-Archivdatei(en) erstellt werden und der übergeordnete Ordner nicht enthalten ist.
Befehle
Notiz: Dadurch wird für jede Datei im Verzeichnis eine ZIP-Archivdatei hinzugefügt, die nur diese Datei enthält.
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%%~X.zip" "%%~X"
Notiz: Dadurch werden alle Dateien nur im Verzeichnis zu der von Ihnen angegebenen ZIP-Datei hinzugefügt.
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "<MyZipFileName>.zip" "%%~X"
Befehl „Schleife verschachteln“
Notiz: Dadurch werden nur Dateien aus den Verzeichnissen unterhalb des Verzeichnisses, in dem sich die Batchdatei befindet, zu einer ZIP-Datei hinzugefügt, die dem Namen des Verzeichnisses entspricht.
@ECHO ON FOR /F "TOKENS=*" %%A in ('DIR /S /B /AD "*"') DO ( FOR %%B IN (*) DO ( "C:\Program Files\7-Zip\7z.exe" a "%%~fA.zip" "%%~fA\*") ) EXIT
Weitere Ressourcen
- Für /F
FOR /?
tokens=x,y,m-n - specifies which tokens from each line are to be passed to the for body for each iteration. This will cause additional variable names to be allocated. The m-n form is a range, specifying the mth through the nth tokens. If the last character in the tokens= string is an asterisk, then an additional variable is allocated and receives the remaining text on the line after the last token parsed.
- Dir
- Für
- ein (Hinzufügen)-Befehl