it-swarm.com.de

Zeile (n) in einer Textdatei anzeigen In der Eingabeaufforderung

Meine Textdatei enthält 23 Zeilen (Zeilen enthalten:! @ $: /; ")

Wie kann ich nur Zeile 3 anzeigen? in oder 7? oder 19?

Ich habe versucht, alle Befehle im Stapelüberlauf

Beispiel:

setlocal enabledelayedexpansion
@echo off
for /f "delims=" %%i in (mytext.txt) do (
if 1==1 (
set first_line=%%i
echo !first_line!
goto :eof
))

das ist nur die erste Zeile anzeigen

4
Alexander

@Compo hat eine gute Antwort gegeben. Dies ist nur zu erläutern. Aliase wie GC sollten nicht in Skripten verwendet werden. Stellen Sie sicher, dass Sie in der Befehlszeile weniger tippen, wenn Sie Lust dazu haben. Durch die Schreibweise der Parameternamen erhalten Sie außerdem mehr Informationen und ein schnelleres Verständnis.

Um nur Linie 3 zu bekommen.

GC .\mytext.txt -T 3|Select -L 1

Get-Content -Path '.\mytext.txt' -TotalCount 3 | Select-Object -Last 1

Über die CMD-Konsole (Eingabeaufforderung): (um nur Zeile sieben zu erhalten (7)

PowerShell "GC .\mytext.txt -T 7|Select -L 1"

PowerShell -NoProfile "Get-Content -Path '.\mytext.txt' -TotalCount 7 | Select-Object -Last 1"

So rufen Sie die Zeilen 3 bis 7 ab:

$FirstLine = 3
$LastLine=7
powershell -NoProfile -Command "Get-Content -Path '.\t.txt' -TotalCount $LastLine | Select-Object -Last ($LastLine - $FirstLine + 1)"

Oder in einem cmd.exe-Stapelskript.

SET "FIRSTLINE=3"
SET "LASTLINE=7"
powershell -NoProfile -Command ^
    "Get-Content -Path '.\t.txt' -TotalCount %LASTLINE% |" ^
        "Select-Object -Last (%LASTLINE% - %FIRSTLINE% + 1)"
5
lit
@echo off
setlocal
set "FILE_TO_PROCESS=%~f1"
set /a LINE_NUMBER=%~2
set /a trim=LINE_NUMBER-1

break>"%temp%\empty"&&fc "%temp%\empty" "%FILE_TO_PROCESS%" /lb  %LINE_NUMBER% /t |more +4 | findstr /B /E /V "*****"|more +%trim%
endlocal

versuchen Sie es mit dieser Fledermaus (lineNumber.bat). Das erste Argument ist die Datei, die Sie verarbeiten möchten. Das zweite ist die Zeilennummer:

call lineNumber.bat someFile.txt 5
1
npocmaka

Hierfür gibt es verschiedene Möglichkeiten. Ihre erste Möglichkeit besteht darin, die for-Schleife normal zu durchlaufen und die Schleife zu verlassen, sobald Sie die gewünschte Zeile erreicht haben.

@echo off

:: Specify which line to return
set get_line=7

:: Skip all lines before it, then print the next line and abort
set /a get_line-=1
for /F "skip=%get_line% delims=" %%A in (mytext.txt) do (
    echo %%A
    goto :end_loop
)

:end_loop

Sie können auch alle Zeilen vor der unerwünschten Zeile in einer temporären Variablen speichern und dann die nächste Zeile anzeigen.

@echo off
setlocal enabledelayedexpansion

:: Specify which line to return
set get_line=7

:: Skip all lines before it, then print the next line and abort
set /a get_line-=2

(
    for /L %%A in (0,1,%get_line%) do set /p skip_line=
    set /p return_line=
) <file.txt

echo !return_line!

Beachten Sie, dass die erste Option nicht zum Zurückgeben der ersten Zeile des Skripts geeignet ist.

1
SomethingDark

Warum geben Sie PowerShell nicht einen Versuch, seit Sie 'display' gesagt haben:

Über die PowerShell-Konsole:

GC .\mytext.txt -T 3|Select -L 1

Über die CMD-Konsole (Eingabeaufforderung) :

PowerShell "GC .\mytext.txt -T 7|Select -L 1"

Aus einer Batch-Datei:

@(PowerShell "GC .\mytext.txt -T 19|Select -L 1"&Pause)
0
Compo