Mehrere Dateien mit ähnlichen Namen stapelweise komprimieren

Mehrere Dateien mit ähnlichen Namen stapelweise komprimieren

Ich habe einen Ordner mit mehreren Dateien, die zwar den gleichen Namen, aber unterschiedliche Erweiterungen haben.

Ich möchte den gleichen Dateinamen in eine gleichnamige ZIP-Datei stapelweise komprimieren.
Erläuterung der Startdateien:

Seth.dbf  
Seth.prj  
Seth.shp  
Seth.shx  
Go to zip:  
Seth.zip

Die Dateien befinden sich unter. Für "C:\Batch"
mich ist es ok, wenn sich die Zip-Datei im selben Ordner befindet wie die Dateien.
Ich habe Folgendes verwendet:

@ECHO OFF
set $PATH="C:Batch\"
pushd %$path%
FOR %%F IN (*.dbj) DO 7Z a "%%~nF.zip" "%%~nF.dbf" "%%~nF.prj"  "%%~nF.shp" "%%~nF.shx"
popd
Echo Done !!!

Oder:

@ECHO OFF
PATH=C:\Batch
for %%e in ("*.dbj") do (%PROGRAMFILES%\7-Zip\7z.exe a "%%~ne.zip" "%%~ne.dbj" "%%~ne.prj" "%%~ne.shp" "%%~ne.shx")

Ich habe den Text in den Editor eingefügt und als .bat-Dateien gespeichert. Klicken Sie auf die Bat-Datei.
Beide Codes haben keine Zip-Ordner erstellt.
Ich musste nicht beide Befehle verwenden, nur einen, der funktioniert. Ich könnte Hilfe gebrauchen, um herauszufinden, was ich beim Codieren falsch gemacht habe. Danke

Antwort1

Prüfen Sie, ob es das ist, was Sie möchten. Diese Batchdatei kann so eingerichtet werden, dass die Originaldateien erhalten bleiben oder gelöscht werden. Sie müssen den Quellordner per Drag & Drop in die Batchdatei ziehen.

DeleteOriginals.gif

KeepOriginals.gif

@echo off

:: Put the path to command line 7zip here:
set Seven=C:\Program Files\7-Zip\7z.exe

:: Delete original files "y" or "n"
set DOriginal=n
 
If exist "%~1" (IF not exist "%~1\" exit) else (exit)

setLocal EnableDelayedExpansion

Set "Folder=%~1"
pushd "%Folder%"

For /f "delims=" %%a in ('dir /b *.*') do IF not "%%~na"=="!OldName!" (
                                                                       set /a Counter+=1
                                                                       set "NameArray[!Counter!]=%%~na"
                                                                       set "OldName=%%~na"
                                                                      )

If /i "%DOriginal%"=="y" (goto :Delete) else (goto :Keep)

:Delete
For /L %%a in (1,1,%Counter%) do "%Seven%" a -tzip -sdel "!NameArray[%%a]!.zip" *"!NameArray[%%a]!"*
goto :End

:Keep
For /L %%a in (1,1,%Counter%) do "%Seven%" a -tzip "!NameArray[%%a]!.zip" *"!NameArray[%%a]!"*
goto :End

:End
echo  Bye
exit

verwandte Informationen