Mam plik wsadowy, który wyświetla plik tekstowy. Pomyślałem, że byłoby miło, gdybym mógł go również spakować.
Będzie to używane w niekontrolowanym środowisku, więc nie mogę przyjmować założeń dotyczących obecności oprogramowania innych firm, takiego jak 7-Zip itp. Musi to wykorzystywać wbudowaną w Windows zdolność do spakowania plików.
windows
command-line
batch
zip
Aaron Bush
źródło
źródło
powershell.exe Compress-Archive file-to-zip.txt zippedfile.zip
(działa również z folderem)Odpowiedzi:
Oto rozwiązanie całego pliku wsadowego (odmiana mojej innej odpowiedzi), które skompresuje plik o nazwie
c:\ue_english.txt
i umieści go wC:\someArchive.zip
:Dostęp do zapisu jest wymagany dla rodzica folderu przechowywanego w
TEMPDIR
. Ponieważ często tak nie jest w przypadku katalogu głównego dysku CTEMPDIR
może być konieczna zmiana.Dostęp do zapisu jest również wymagany dla folderu, w którym
.bat
znajduje się skrypt (ponieważ generuje tam plik).Należy również pamiętać, że rozszerzenie pliku skompresowanego musi mieć postać
.zip
. Próby użycia innego rozszerzenia mogą spowodować błąd skryptu. Zamiast tego wygeneruj.zip
plik i zmień jego nazwę.źródło
write-zip
cmdlet, które można pobrać z Pscx .TEMPDIR
? Myślę, że Twoim celem jest zawinięcie plikuFILETOZIP
w folder, prawda?Możliwe jest skompresowanie plików bez instalowania dodatkowego oprogramowania (przetestowałem to). Rozwiązaniem jest:
Uruchom to w oknie wiersza polecenia, aby utworzyć plik ZIP o nazwie
C:\someArchive.zip
zawierający wszystkie pliki w folderzeC:\test3
:Gdzie plik
zip.vbs
zawiera:Nie przetestowałem go pod kątem ścieżek i nazw plików zawierających spacje. Może to zadziałać, jeśli wokół parametrów wiersza poleceń zostaną umieszczone cudzysłowy.
Jak to działa: wbudowana funkcja zip w systemie Windows (Windows XP i nowszy?) Jest udostępniana przez interfejsy COM z powłoki Windows explorer.exe - czyli części „Shell.Application”. Tego interfejsu COM można używać ze skryptu VBScript, ponieważ taki skrypt może uzyskiwać dostęp do komponentów COM. Aby skrypt był w pełni samodzielny, na początek tworzy pusty plik ZIP (można również utworzyć pusty plik ZIP i skopiować go do systemu docelowego wraz ze skryptem VBScript).
VBScript jest instalowany domyślnie w każdym wydaniu systemu Microsoft Windows na komputer od wersji Windows 98.
CScript.exe
jest częścią Windows Script Host . Windows Script Host jest domyślnie dystrybuowany i instalowany w systemie Windows 98 i nowszych wersjach systemu Windows. Jest także instalowany, jeśli zainstalowany jest Internet Explorer 5 (lub nowszy).źródło
Jeśli jesteś otwarty na używanie PowerShell , możliwości zip są dostępne w .NET 2.0 (PowerShell to .NET). Oto przykład ( źródło ) autorstwa Mike'a Hodnicka :
źródło
Możesz wyeliminować ryzyko przekroczenia limitu czasu podczas kompresji poprzez odpytywanie o istnienie okna dialogowego kompresji. Ta metoda obsługuje również anulowanie użytkownika przez okno kompresji.
źródło
.Sleep(whatever)
sprawiają, że jestem chory.Jeśli jesteś w stanie zainstalować Resource Kit Tools , znajdziesz narzędzie wiersza poleceń o nazwie COMPRESS, które może tworzyć skompresowane pliki archiwów, takie jak zip.
źródło
źródło
objShell.NameSpace( ZipFile ).Items.Count
wewnątrz pętli, zawsze wynosi 0, nawet jeśli plik zip jest tworzony i zawiera oczekiwaną zawartość ...Wiele plików / katalogów z uproszczonym kodem.
plik zip.vbs
źródło
To jest mutacja przyjętej odpowiedzi. Wykonuję mnóstwo zadań automatyzacji nawet do tysięcy plików jednocześnie, więc nie mogę spać przez 2 sekundy i nie przejmować się tym. Zebrałem tutaj obejście , które jest podobne do odpowiedzi Jiří Kočary tutaj .
Spowoduje to pingowanie folderu docelowego co 200 ms, co jest w przybliżeniu tak szybkie, jak Microsoft mówi, aby sprawdzić dostępność aktualizacji FS.
źródło
Oto moja próba podsumowania okien wbudowanych możliwości kompresji i dekompresji - https://stackoverflow.com/questions/28043589/how-can-i-compres-zip-and-uncopress-unzip-files-and-folders -z-partią-f
z kilkoma podanymi rozwiązaniami, które powinny działać na prawie każdym komputerze z systemem Windows.
Jeśli chodzi o shell.application i WSH, wolałem jscript, ponieważ pozwala on na hybrydowy plik wsadowy / jscript (z rozszerzeniem .bat), które nie wymagają plików tymczasowych. W jednym pliku umieściłem funkcje rozpakowywania i zip oraz kilka innych funkcji .
źródło
Jeśli w systemie Windows 8 lub Windows Server 2012 masz PowerShell i .NET 4.5, możesz to zrobić:
zip.ps1 (użycie :)
-directory <directory to zip up> -name <zip name>
:zip.bat (jeśli potrzebujesz pomocnika, aby wywołać program PowerShell, katalog jest pierwszym argumentem, a nazwa zip drugim):
źródło
Windows 10 build 17063 lub nowszy jest dołączony do tar.exe, który jest zdolny do pracy z zip z linii poleceń.
lub stworzyć archiwum
źródło
Wiersz poleceń systemu Windows udostępnia teraz polecenie kompaktowe, które, o ile wiem, jest rodzime dla systemu Windows. To powinno spełnić wymagane wymagania, chyba że coś przeoczyłem.
źródło
compact
istniał od XP i jest narzędziem do zarządzania kompresją NTFS