Jak odczytać pierwszą linię z pliku tekstowego przy użyciu pliku wsadowego systemu Windows? Ponieważ plik jest duży, chcę zająć się tylko pierwszą linią.
batch-file
cmd
Jesse Vogt
źródło
źródło
Odpowiedzi:
Oto plik wsadowy ogólnego przeznaczenia do wydrukowania pierwszych
n
wierszy z pliku takiego jakhead
narzędzie GNU , zamiast tylko jednego wiersza.Na przykład:
Obecnie nie liczy pustych wierszy. Podlega również ograniczeniu długości wiersza pliku wsadowego do 8 KB.
źródło
;
, domyślnego znaku FOR / F EOL. Jeśli poprosisz o 10 wierszy, wydrukuje pierwsze 10 wierszy, które nie są puste i nie zaczynają się od;
.uh? imo to jest znacznie prostsze
źródło
echo %texte:~3%
na przykład pominie pierwsze trzy znaki. Jest to przydatne, gdy czytasz plik UTF-8 z BOM.Uh wy ...
źródło
findstr "^1:"
i zyskaj ciepło i ochronę podwójnych cudzysłowów. Lub, jeśli gardzisz cytatami takimi jak ja i chcesz żyć niebezpiecznie, użyjfindstr /b 1:
findstr ^^1
.set /p
Rozwiązanie jest o wiele bardziej efektywne w przypadku dużych plików.Możesz spróbować:
edytuj Lub załóżmy, że masz cztery kolumny danych i chcesz od piątego wiersza do dołu, spróbuj tego:
źródło
"delims="
aby wydrukować pełne nazwy folderów wraz ze spacjami.Dzięki thetalkingwalnut z odpowiedzią komendą (a) wsadową systemu Windows do odczytania pierwszej linii z pliku tekstowego wpadłem na następujące rozwiązanie:
źródło
Nieco opierając się na odpowiedziach innych osób. Teraz możesz określić plik, z którego chcesz odczytać i zmienną, w której chcesz umieścić wynik:
Oznacza to, że możesz użyć powyższego w ten sposób (zakładając, że nazwałeś to getline.bat)
źródło
Jedna linijka, przydatna do przekierowania stdout z „>”:
źródło
Spróbuj tego
źródło
Problem z
EXIT /B
rozwiązaniami, gdy bardziej realistycznie jest w pliku wsadowym, jako tylko jedna jego część, jest następujący. We wspomnianym pliku wsadowym nie ma żadnego dalszego przetwarzania po rozszerzeniuEXIT /B
. Zwykle partie to znacznie więcej niż jedno, ograniczone zadanie.Aby przeciwdziałać temu problemowi:
(Jednak tak zwane trujące postacie nadal będą stanowić problem.)
Więcej na temat uzyskiwania określonej linii za pomocą poleceń wsadowych:
[Dodano 28 sierpnia 2012 r.] Można też mieć:
źródło
Aby cicle plik (
file1.txt
,file1[1].txt
,file1[2].txt
, itd.):I to działa.
źródło
set /p
pyta poprzez monit; jednakże w przypadku przekierowania pliku<
natychmiast pobiera zawartość pliku po zachęcie; a ponieważ pierwsza linia kończy się końcem linii, w tym miejscu zachęta przestaje czytać, a tym samym przechowuje tylko pierwszą linię w zmiennej.Zauważ, że podejście do pliku wsadowego będzie ograniczone do limitu linii dla procesora poleceń DOS - zobacz Jaki jest limit długości wiersza poleceń? .
Więc jeśli spróbujesz przetworzyć plik, który ma jakiekolwiek linie zawierające więcej niż 8192 znaków, skrypt po prostu je pominie, ponieważ wartość nie może być zatrzymana.
źródło
Inny sposób
źródło
Oto obejście za pomocą
powershell
:(Możesz łatwo przeczytać również zakres wierszy za pomocą
powershell (Get-Content file.txt)[0..3]
)Jeśli chcesz ustawić zmienną w skrypcie wsadowym, jako pierwszą linię
file.txt
możesz użyć:źródło
for /f "delims=" %a in (downing.txt) do echo %a & pause>nul
Drukuje pierwszą linię, a następnie czeka, aż użytkownik naciśnie klawisz, aby wydrukować następną linię. Po wydrukowaniu wymaganych linii naciśnij Ctrl + C, aby zatrzymać.
@ Ross Presser: Ta metoda drukuje tylko wiersze, a nie numery wierszy dodawane na początku.
źródło