我想撰寫一個批處理腳本來讀取分隔符之間的特定單詞:
例如,我的文本檔案包含以下內容
!DATA
Scen|2022|m|YTD|a|b|c|d|e|f|g|h|101
Scen|2022|m|YTD|a1|b1|c1|d1|e1|f1|g1|h1|102
文本檔案將有大約 1000 行。我總是想讀第三行。
我想要:
1.獲取管道分隔符之前的第一個單詞(例如Scen)并存盤到某個變數
2.然后我想要第一個和第二個管道標記之間的第二個單詞(例如2022)
在這方面的任何幫助都會很棒。
uj5u.com熱心網友回復:
這是一個讓您真正投入使用的示例:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "targetLine="
( Set /P "="
Set /P "="
Set /P "targetLine="
) 0< "textFile.ext"
If Not Defined targetLine GoTo :EOF
For /F "Delims==" %%G In ('"(Set Field) 2>NUL"') Do Set "%%G="
Set "i=1"
SetLocal EnableDelayedExpansion
Set "Field!i!=%targetLine:|=" & Set /A i =1 & Set "Field!i!=%"
Echo %%Field1%% = %Field1%; %%Field2%% = %Field2%
Pause
上述技術實際上已經為每個管道分隔欄位定義了一個變數。看到那些只是改變13線(Set Field) 2>NUL
(Set /P "var=") 0< "stdInput"用第一個非空輸入行的值定義var,在這種情況下,您可以將stdInput ( textfile.ext)更改為您的實際源檔案。因此,我擴展了檢索第三行的想法。我不會解釋每個欄位的變數的創建,只是將您鏈接到一個已經存在的解釋。
uj5u.com熱心網友回復:
- 如果這些是您的預期執行:
!DATA // Your Line Skipped: 1
Scen|2022|m|YTD|a|b|c|d|e|f|g|h|101 // Your Line Skipped: 2
Scen|2022|m|YTD|a1|b1|c1|d1|e1|f1|g1|h1|102 // Your Line Strings To Save: Scen & 2022
... // Your Lines Remaining Skipped: Goto %:^)
- 一個更簡單的方法是:
@echo off & cd /d "%~dp0"
for /f "usebackq skip=2 delims=| tokens=1-2*" %%i in (`
type InputFile.txt`)do set "_str_1=%%i" && set "_str_2=%%j" & goto %:^)
%:^)
echo\ %%_str_1%% == %_str_1% && echo\ %%_str_2%% == %_str_2%
uj5u.com熱心網友回復:
另一種可能更簡單的方法:
@echo off
setlocal EnableDelayedExpansion
rem Read the 3rd line
( for /L %%i in (1,1,3) do set /P "line3=" ) < test.txt
rem Get 1st and 2nd words from line 3
set "goto="
set "word1=%line3:|=" & !goto! & set "goto=goto continue" & set "word2=%"
:continue
echo word1="%word1%", word2="%word2%"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498386.html
標籤:批处理文件
上一篇:cmd.exe 批處理檔案對visualstudio編譯器的使用
下一篇:Linux基礎命令
