W systemie Windows możesz skompresować niektóre pliki
kliknij prawym przyciskiem → Wyślij do → Skompresowany (skompresowany) folder
I rozpakuj, klikając dwukrotnie .zip
plik i rozpakuj pliki.
Czy istnieje sposób zastosowania tych umiejętności ze skryptu (pliku .bat) bez potrzeby instalowania oprogramowania innych firm ?
windows
batch-file
zip
Roee Gavirel
źródło
źródło
Odpowiedzi:
W 2013 roku nie było to możliwe. Microsoft nie podał w tym celu żadnego pliku wykonywalnego.
Zobacz ten link, aby dowiedzieć się, jak to zrobić. /superuser/201371/create-zip-folder-from-the-command-line-windows
Od Windows 8, .NET Framework 4.5 jest instalowany domyślnie, z dostępnymi System.IO.Compression.ZipArchive i PowerShell, można napisać skrypty, aby to osiągnąć, patrz https://stackoverflow.com/a/26843122/71312
źródło
Aby rozwinąć rozwiązanie PowerShell Stevena Penny'ego, możesz włączyć je do pliku wsadowego, wywołując powershell.exe w następujący sposób:
Jak powiedział Ivan Shilo, nie będzie to działać z PowerShell 2, wymaga PowerShell 3 lub nowszego i .NET Framework 4.
źródło
'.'
, np .:powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.'); }"
& {}
? W przypadku PS5 to też działa:powershell.exe -nologo -noprofile -command "Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.');"
Począwszy od .NET 4.5 , PowerShell może to zrobić:
Przez ostatnie dwie linie,
bar
afoo
może być zastąpione nazwą chcesz folder mieć, czy cokolwiek to nazwa folderu preegzystującym.foo.zip
w obu przypadkach działa jako plik zip, aby zapisać jako lub rozpakować z.źródło
Jeśli masz zainstalowaną Javę, możesz skompresować do archiwum ZIP za pomocą
jar
polecenia:źródło
PowerShell 5.0
Od
Microsoft.PowerShell.Archive
możesz użyć:Compress-Archive
Expand-Archive
Na przykład:
Utwórz
result.zip
z całegoTest
folderu:Wyodrębnij zawartość z
result.zip
określonegoTest
folderu:źródło
powershell Compress-Archive -Path C:\SomeFile.ext -DestinationPath C:\SomeFile.zip
bezpośrednio z wiersza poleceń bez konieczności tworzenia skryptu (zakładając, że masz zainstalowany program Powershell v5, co możesz zrobić, wracając przynajmniej do Windows 7).Nie jest to dokładnie ZIP, ale jedynym sposobem kompresji pliku za pomocą narzędzi systemu Windows jest:
Aby zdekompresować:
Zaawansowany przykład (z ss64.com):
Więcej informacji: makecab , rozwiń , zaawansowane zastosowania makecab
źródło
Korzystanie z 7-Zip:
Zip : masz folder
foo
i chcesz go skompresowaćmyzip.zip
Rozpakuj : chcesz rozpakować (
myzip.zip
) do bieżącego katalogu (./
)źródło
without the need to install any 3rd party
Chciałem odpowiedzieć na to dokładne pytanie i z moich badań wynika, że odpowiedź DiryBoy wydaje się trafna.
Znalazłem program compact.exe kompresuje pliki, ale nie mogę utworzyć pliku o wysokim stopniu kompresji (lub zestawu plików). Jest podobny do opcji dostępnej po kliknięciu litery dysku lub partycji prawym przyciskiem myszy w systemie Windows. Otrzymasz opcję czyszczenia (usuwania plików tymczasowych itp.), A także kompresji plików. Skompresowane pliki są nadal dostępne, ale są po prostu skompresowane, aby utworzyć miejsce na dysku, który ma mało miejsca.
Znalazłem też plik compress.exe, który akurat miałem na swoim komputerze. Nie jest natywnie na większości komputerów z systemem Windows i jest częścią zestawu zasobów z 2003 roku. Tworzy spakowany plik, ale jest bardziej podobny do plików z dysku instalacyjnego systemu Windows (ma znak podkreślenia jako ostatni znak rozszerzenia lub nazwy pliku). A polecenie extract.exe wyodrębnia te pliki.
Jednak mantra jest taka, że jeśli można to zrobić natywnie za pomocą GUI, prawdopodobnie istnieje sposób, aby to zrobić za pomocą partii, .vbs lub innego rodzaju skryptu w wierszu poleceń. Ponieważ system Windows ma opcję „wyślij do”, aby utworzyć plik zip, wiedziałem, że musi istnieć sposób, aby to zrobić za pomocą wiersza polecenia i znalazłem kilka opcji.
Oto świetny link, który pokazuje, jak skompresować plik za pomocą rodzimych poleceń systemu Windows.
/superuser/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili
Przetestowałem to z katalogiem zawierającym wiele zagnieżdżonych plików i folderów i działało idealnie. Wystarczy postępować zgodnie z formatem wiersza poleceń.
Istnieje również sposób na rozpakowanie plików za pomocą wiersza polecenia, który również znalazłem. Jednym ze sposobów jest otwarcie okna eksploratora pokazującego zawartość spakowanego pliku. Niektóre z nich używają również języka Java, który niekoniecznie jest natywny dla systemu Windows, ale jest tak powszechny, że prawie tak się wydaje.
/superuser/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default
Jak rozpakować plik za pomocą wiersza polecenia?
źródło
Możesz użyć skryptu VBScript zawiniętego w plik BAT. Ten kod działa na względnej ścieżce.
Nie są potrzebne żadne narzędzia ani zależności innych firm. Po prostu ustaw
SOURCEDIR
iOUTPUTZIP
.Nazwa pliku: ZipUp.bat
Przykładowe użycie
Alternatywnie, można parametrize tego pliku zastępując linię
CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP%
zeCScript _zipup.vbs %1 %2
w takim przypadku może to być nawet łatwiej wywoływana z po prostu dzwoniCALL ZipUp C:\Source\Dir C:\Archive.zip
.źródło
Mam problem ze wszystkimi tymi rozwiązaniami.
Nie są dokładnie takie same i wszystkie tworzą pliki, które mają niewielką różnicę wielkości w porównaniu do tego,
RMB --> send to --> compressed (zipped) folder
gdy są tworzone z tego samego folderu źródłowego. Najbliższa różnica wielkości, jaką miałem, to różnica 300 KB (skrypt> ręczny), wykonana za pomocą:(Zwróć uwagę na -CompressionLevel . Istnieją trzy możliwe wartości : Najszybsza, Bez kompresji i Optymalna, (Domyślnie: Optymalna))
Chciałem utworzyć plik .bat, który powinien automatycznie kompresować folder wtyczki WordPress, nad którym pracuję, do archiwum .zip, dzięki czemu mogę przesłać go na stronę WordPress i przetestować wtyczkę.
Ale z jakiegoś powodu nie działa z żadną z tych automatycznych kompresji, ale działa z ręczną kompresją RMB, co wydaje mi się bardzo dziwne.
Generowane przez skrypt pliki .zip w rzeczywistości niszczą wtyczki WordPress do tego stopnia, że nie można ich aktywować, a także nie można ich usunąć z wnętrza WordPress. Mam SSH na „tylnej stronie” serwera i ręcznie usuwam przesłane pliki wtyczek. Podczas gdy ręcznie generowane pliki RMB działają normalnie.
źródło
Jeśli musisz to zrobić jako część skryptu, najlepszym sposobem jest użycie Java. Zakładając, że katalog bin znajduje się na twojej ścieżce (w większości przypadków), możesz użyć wiersza poleceń:
Jeśli Java nie znajduje się na Twojej ścieżce, odwołaj się bezpośrednio:
źródło
Open source to twój przyjaciel :-)
Oto rozpakowanie : http://gnuwin32.sourceforge.net/packages/unzip.htm
Istnieje również polecenie ZIP: http://gnuwin32.sourceforge.net/packages/zip.htm
Wystarczy pobrać pliki binarne .
źródło
To jest zaktualizowana wersja odpowiedzi udzielonej przez @ PodTech.io
W tej wersji cały kod VBS został poprawnie wstawiony do pliku wsadowego. Jest również utworzony w podprogramie, który można wywołać za pomocą pojedynczej linii z dowolnego miejsca w skrypcie wsadowym:
źródło
Mówisz, że próbujesz to zrobić bez oprogramowania innych firm. Nie jestem pewien, czy weźmiesz pod uwagę oprogramowanie .NET firmy zewnętrznej.
Ale możesz utworzyć własne narzędzie wiersza polecenia w .NET. Nie powinno to wymagać więcej niż kilku linii kodu.
ZipFile Class
źródło
Dodając po @Jason Duffett za odpowiedź i uwagach, oto skrypt, który dostaje na wejściu i wyjściu (nazwa pliku i nazwę katalogu, odpowiednio) od użytkownika:
Stosowanie:
źródło
Aby skompresować plik:
źródło
Możesz rozpakować skompresowany lub skompresowany plik systemu Windows za pomocą polecenia Rozwiń , np
źródło
Expand file.zip file
po prostu kopiuje zip do innego pliku bez rozszerzenia. Nie dekompresuje ZIP do folderu.