Generuję plik wsadowy systemu Windows, który może stać się dość duży, powiedzmy kilka megabajtów. Szukałem możliwych ograniczeń dotyczących maksymalnego rozmiaru pliku i maksymalnej długości wiersza w pliku wsadowym, ale nie mogłem znaleźć niczego. Jakieś praktyczne doświadczenia?Ograniczenia rozmiaru pliku i długości linii plików wsadowych systemu Windows
Odpowiedz
Myślę, że rozmiar pliku może wynosić nawet 2 GB, a może nawet więcej. Jest to język interpretowany, więc jeśli zostanie to zrobione poprawnie, limit rozmiaru pliku powinien być limitem rozmiaru pliku systemu plików. Nigdy nie miałem żadnych błędów, gdy pliki wsadowe były zbyt duże, a niektóre z tych, które utworzyłem, miały kilka MB.
Powinien być limit długości linii, ale powinien być większy niż 256. Można to łatwo przetestować, po prostu wykonaj kilka "ustaw A = 123456789012 ... endofline", po tym "echo% A%", i zobaczysz, jak daleko możesz się posunąć.
Działa dla mnie z bardzo długimi liniami (około 4K), ale przy 8K echo
wyświetla komunikat "Linia zbyt długa", więc 8192 bajty powinny być pewnym ograniczeniem.
Teraz testowany również pod względem rozmiaru, testowany z "echem off", setkami setów wierszy, po "echo end", i działał na plik 11 MB (choć zajęło to kilka sekund :) - nie Ogranicz widoczność tutaj.
110 MB również zadziałało. Czy to wystarczy? ;)
nice. dziękuję za przetestowanie tego dla mnie :-) 8k brzmi bardzo, więc mam nadzieję, że to wystarczy. W przeciwnym razie mógłbym podzielić linie z tym małym kapeluszem ^? – zedoo
Nie, po prostu przetestowałem. 8K wydaje się być twardym limitem, nawet przy dzieleniu. – schnaader
Należy również zauważyć, że dotyczy to linii końcowych (z wymienionymi zmiennymi), więc echo% a %% a% nie powiedzie się, jeśli% a% jest łańcuchem dłuższym niż 4K! – schnaader
Niektóre pomysły, niekoniecznie wzajemnie się wykluczają:
- Przełącz na PowerShell.
- Przełącz na aplikację opartą na danych, tak aby wszystkie zmienne dane były przechowywane w pliku danych (CSV, tekst, cokolwiek), w wyniku czego możesz mieć mniejszy skrypt ze skróconą konfiguracją, który otwiera plik danych i działa .
Powinien działać co najmniej do 2 GB. Linie są odczytywane bezpośrednio z pliku BAT na dysku (nie ma potrzeby buforowania ). Składam takie oświadczenie z następujących powodów:
W rzeczywistości można edytować plik BAT, gdy jest uruchomiony! I będzie działał , nawet jeśli edytor tekstu może zmienić nazwę oryginalnej wersji i zapisać nową wersję w nowym miejscu na dysku . Dopóki nie będziesz wstawiał tekstu powyżej aktualnie wykonywanego polecenia. Linie mogą być zmienione/wstawione/usunięte poniżej aktualnie wykonywanego polecenia , a nowe linie zostaną wykonane. Mam często często to zrobić z plikami BAT zawierającymi długą listę poleceń wget w postaci , z których każda zajmuje kilkadziesiąt minut na wykonanie.
Według firmy Microsoft nie ma limitu rozmiaru pliku wsadowego. Jednak wiersz pliku wsadowego nie powinien przekraczać 127 bajtów lub zostanie obcięty podczas wykonywania.
Zobacz Maximum Line Length and Count for Batch Files & CONFIG.SYS
Pojedyncza linia nie powinna przekraczać 8192 znaków, nawet po rozszerzeniu %var%
lub !var!
wyrażeń, jeszcze masz błąd.
Nie ma (znanych) ograniczeń dla samego pliku.
Maksymalna długość dowolnej linii poleceń (lub zmiennej) w CMD to 8191 characters.
- 1. Porównanie czasu plików wsadowych systemu Windows
- 2. Jak wykryć ograniczenia rozmiaru systemu plików poszczególnych plików?
- 3. Czy istnieje limit rozmiaru plików wsadowych?
- 4. Czy istnieje struktura testów jednostkowych dla plików wsadowych systemu Windows?
- 5. Katalog początkowy plików wsadowych systemu Windows po uruchomieniu "admin as
- 6. Pobierz Ograniczenia systemu plików
- 7. Czy w systemie plików NTFS istnieją ograniczenia długości pliku ścieżki?
- 8. Zaawansowane wyszukiwanie plików systemu Windows
- 9. Uwierzytelnianie plików wykonywalnych systemu Windows
- 10. Jakie są ograniczenia rozmiaru pliku danych Fb.ui?
- 11. Czy istnieje sposób ograniczenia długości linii w ggplot2?
- 12. strzałek wyzwalać „pause” dwukrotnie w plikach wsadowych systemu Windows
- 13. Ograniczenie długości linii ciągów i łamanie linii
- 14. Polecenie Synchronizacja systemu plików dla systemu Windows
- 15. Polecenie Windows tylko dla rozmiaru pliku?
- 16. Uzyskiwanie rozmiaru terminala wc dla systemu Windows?
- 17. wywoływanie plików wsadowych wewnątrz nant
- 18. Pobierz aktualny katalog plików wsadowych
- 19. Sortowanie nazw plików według długości nazwy pliku
- 20. Jak wygenerować ciąg o określonej długości do wstawienia do pliku, aby spełnić kryteria rozmiaru pliku?
- 21. Limit długości linii gfortran
- 22. PhpStorm - zmiana rozmiaru i koloru zmienionych linii
- 23. Ograniczenie długości linii źródłowej
- 24. Pobieranie atrybutów plików z systemu Windows cmd
- 25. Linii i pętli systemu Linux
- 26. Odczytaj wiersz z pliku, nie znając długości linii
- 27. WebDAV: Jaki jest domyślny limit rozmiaru plików dla systemu Windows 7?
- 28. Zapisywanie wyjątków do pliku dziennika systemu Windows
- 29. Logi wiersza poleceń systemu Windows do pliku
- 30. Ćwiczenie K & R 1.16 - Ograniczenie długości linii
Bez wchodzenia w to, co dokładnie zamierzasz napisać do tego pliku wsadowego, wydaje mi się, że jeśli potrzebujesz napisać kilka megabajtów tego, robisz coś nie tak. Megabajty partii nie wydają mi się dobrym projektem. –
masz rację. Jest to szybkie i nieaktualne obejście - ale jest to najszybsza droga. – zedoo