iT邦幫忙

0

for /f 擷取"行"的方法

有一個123.txt 透過findstr /C:"version "123.txt 輸出如下

version=123
new_version=789

嘗試了很多種方法 都沒辦法單獨輸出第一行version=123或是第二行new_version=789

不好意思想請教版上前輩要如何才能單獨輸出第一行或是第二行

看更多先前的討論...收起先前的討論...
slime iT邦大師 1 級 ‧ 2020-01-20 17:59:29 檢舉
原始資料長怎樣? 撈取的語法為何?

批次檔換行可以用 echo. (中間不要空格)
簡單一點的說 我現在有一個123.txt 用findstr /C:"version" D:\123.txt 後輸出是
version=123
new_version=789

我要如何才能擷取單獨第一行或是第二行
slime iT邦大師 1 級 ‧ 2020-01-21 08:51:17 檢舉
參考:
https://johnson560.pixnet.net/blog/post/311855304-%E5%BE%9E%E6%96%87%E5%AD%97%E6%AA%94%E4%B8%AD%E8%AE%80%E5%8F%96%E7%89%B9%E5%AE%9A%E7%9A%84%E8%A1%8C
slime iT邦大師 1 級 ‧ 2020-01-21 09:06:22 檢舉
另外如果用詞都是 version 跟 new_version , 也可以分兩次抓:

1. find "new_version"
2. find "version" | find /v "new_version"
謝謝SLIME大大回覆 但是我用find "version" 會兩行都跑出來 我只希望顯示第一行或是第二行
找到答案了

@Echo Off&Setlocal Enabledelayedexpansion
For /f "delims=" %%i in (1.txt) do (
Set /a n+=1
If !n!==2 Echo %%i
)
Pause

數字2代表擷取第2行

1 個回答

0
蟹老闆
iT邦大師 1 級 ‧ 2020-01-29 14:54:49
最佳解答

如果只是輸出請參考

Echo Off
Set String=new_version
findstr ^^%String% 1.txt
pause

如果可以指定固定行號請參考

Echo Off
For /f %%i in ('More +1 1.txt') do (
Echo %%i
Pause
Goto :EOF
)

其中+1 為要略過的行數

非常感謝蟹老闆多次幫忙 真的很感謝

我要發表回答

立即登入回答