我正在嘗試從 txt 檔案的最后一行中提取最后一個單詞。

我想要的結果只是Cup$2!.
這是我嘗試過的:
@echo off
SetLocal EnableDelayedExpansion
set L=1
for /F "tokens=2 delims=" %%a in (corner.txt) do (
set line=%%a
if !L!==7 set Line7=%%a
set /a L=!L! 1
)
echo The word is %Line7%
pause
我得到的結果是The word is。
我應該編輯什么以獲得上述結果?
uj5u.com熱心網友回復:
獲取行數。
for /f "tokens=3*" %%i in ('find /c /v /n /i"" corner.txt') do set /a v=%%i-1
然后從最后一行的第 7 個單詞中獲取最后一個值:
for /f "tokens=7*" %%a in ('more corner.txt %v%') do set "String="%%b""
變數%String%保持用雙引號括起來的值:Cup&2!/Cup$2!
如果您/用作分隔符,您可以獲得最后一個值:
for /f "delims=/ tokens=2*" %%a in (%String%) do @echo %%a
uj5u.com熱心網友回復:
在批處理檔案中決議字串從來都不是理想的,但這似乎可行:
@echo off
setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION
echo.line 1 > "%temp%\SO_Test.txt"
echo. >> "%temp%\SO_Test.txt"
echo.foo^&bar!baz hello/world Cup^&2!/Cup$2!>> "%temp%\SO_Test.txt"
goto start
:start
set "line="
for /F "usebackq delims=" %%a in ("%temp%\SO_Test.txt") do @set line=%%a
:word
set "b="
rem Delims is slash, tab, space and the order is important
for /F "tokens=1,* delims=/ " %%A in ("%line%") do (
set "line=%%A"
set "b=%%B"
)
if not "%b%" == "" (
set "line=%b%"
goto word
)
echo.Last word is "%line%"
uj5u.com熱心網友回復:
這是一個快速示例,說明如何通過讀取代碼來捕獲所需的子字串,即第七行的最后一個子字串:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "var="
For /F UseBackQ^ Skip^=7^ Delims^=^ EOL^= %%G In ("corner.txt") Do Set "var=%%~nxG" & GoTo Next
If Not Defined var GoTo EndIt
:Next
SetLocal EnableDelayedExpansion
Echo The word is !var!
EndLocal
:EndIt
Echo Press any key to close . . .
Pause 1>NUL
EndLocal
Exit /B
但是,如果正如您的問題標題和正文所要求的那樣,您想要最后一行的最后一個子字串,它會更簡單一些:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "var="
For /F UseBackQ^ Delims^=^ EOL^= %%G In ("corner.txt") Do Set "var=%%~nxG"
If Not Defined var GoTo EndIt
SetLocal EnableDelayedExpansion
Echo The word is !var!
EndLocal
:EndIt
Echo Press any key to close . . .
Pause 1>NUL
EndLocal
Exit /B
但是,我不會解釋任何內容,請使用頁面頂部的搜索工具,以及我使用的每個命令的內置幫助的輸出。
uj5u.com熱心網友回復:
您可以在batch-file運行時使用它cmdon windows。
FOR /F "delims=" %%A IN ('powershell -NoLogo -NoProfile -Command ^
"((Get-Content -Path 'corner.txt' -Last 1) -split '[\s/]')[-1]"') DO (SET "LINE7=%%A")
ECHO %LINE7%
如果腳本是用 PowerShell 而不是 cmd 語言撰寫的,它可能是單行的。
$Line7 = ((Get-Content -Path 'corner.txt' -Last 1) -split '[\s/]')[-1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/415753.html
標籤:
下一篇:我的反應應用程式只是不顯示圖表
