我的文本文件包含23行(行包括:!@$:/;")
我该如何只显示第3行?还是第7行?或者第19行?
我尝试了stackoverflow上的所有命令。
示例:
setlocal enabledelayedexpansion
@echo off
for /f "delims=" %%i in (mytext.txt) do (
if 1==1 (
set first_line=%%i
echo !first_line!
goto :eof
))
这只显示第一行。
我的文本文件包含23行(行包括:!@$:/;")
我该如何只显示第3行?还是第7行?或者第19行?
我尝试了stackoverflow上的所有命令。
示例:
setlocal enabledelayedexpansion
@echo off
for /f "delims=" %%i in (mytext.txt) do (
if 1==1 (
set first_line=%%i
echo !first_line!
goto :eof
))
这只显示第一行。
GC
。在命令行中,如果你感觉可以减少输入,那么可以使用别名。此外,拼写参数名称提供更多信息并有助于更快地理解。GC .\mytext.txt -T 3|Select -L 1
Get-Content -Path '.\mytext.txt' -TotalCount 3 | Select-Object -Last 1
从CMD控制台(命令提示符)中获取第七行的方法如下:
PowerShell "GC .\mytext.txt -T 7|Select -L 1"
PowerShell -NoProfile "Get-Content -Path '.\mytext.txt' -TotalCount 7 | Select-Object -Last 1"
$FirstLine = 3
$LastLine=7
powershell -NoProfile -Command "Get-Content -Path '.\t.txt' -TotalCount $LastLine | Select-Object -Last ($LastLine - $FirstLine + 1)"
SET "FIRSTLINE=3"
SET "LASTLINE=7"
powershell -NoProfile -Command ^
"Get-Content -Path '.\t.txt' -TotalCount %LASTLINE% |" ^
"Select-Object -Last (%LASTLINE% - %FIRSTLINE% + 1)"
@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
请使用名为lineNumber.bat的批处理文件进行尝试,第一个参数是您想要处理的文件,第二个参数是行号:
call lineNumber.bat someFile.txt 5
for /f "tokens=2" %%a in (state.txt) do set word1=%%a
的某个变体)。 - deassertedset /p line=<"%temp%\empty"
将其读取回来,然后使用for %%a in (!line!) do set last_phrase=%%a
和EnableDelayedExpansion获取了最后一个短语。谢谢! - deassertedset /p my_line=<"my_filename "
以将其读取回来。 - deasserted有几种方法可以实现这个功能。第一种选择是正常遍历for循环,并在到达所需行时退出循环。
@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
@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!
既然你说“显示”,为什么不试试PowerShell
:
从PowerShell控制台开始:
GC .\mytext.txt -T 3|Select -L 1
从CMD控制台(命令提示符):
PowerShell "GC .\mytext.txt -T 7|Select -L 1"
从批处理文件中:
@(PowerShell "GC .\mytext.txt -T 19|Select -L 1"&Pause)
if
语句是多余的;它总是会返回 true,而1
和它是第一行没有任何关系。 - SomethingDark