Re: [問題] batch 在每行開頭新增資料

看板Windows作者 (46825)時間9年前 (2016/09/14 21:37), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《wopicoun (挖屁康)》之銘言: : 小弟初學batch file : 想問下如果有我一個txt檔如下 : 123 apple : 456465 orange : 88 banana : . : . : . : 第一欄是數字,第二欄是字串, : 1.我想要將每一行通過第一欄排序大小 : 2.之後在開頭新增一個新的欄位,放其他字串例如 Aa 123 apple 這樣 : 大致拆成兩步,請問如何只用bat完成呢? : 感謝 code如下: @echo off Setlocal EnableDelayedExpansion for /f "tokens=1,2*" %%i in (source1.txt) do ( set /a var=1000000000+%%i echo !var! %%j>>temp1.txt ) for /f "tokens=1,2*" %%i in ('sort temp1.txt') do ( set /a var=%%i-1000000000 echo !var! %%j>>temp2.txt set /a count=!count!+1 call :add !count! ) :add for /f "skip=%1" %%a in (source2.txt) do ( echo %%a !var! %%j>>result.txt goto :eof ) pause exit source1.txt和source2.txt 前者是你要排序的Txt檔後者是你要新增的Txt檔 執行產生temp1.txt & temp2.txt & result.txt三個Txt檔 temp2.txt可以不用輸出 result.txt是你要的結果 概念大約就是source1.txt第一欄加上1000000000 就可以用sort指令去排序 排序後再淢回1000000000輸出成temp2.txt 之後再用一個for迴圈和skip選項依序抓source2.txt每行的值 插在每行的前面輸出成result.txt 因為skip的值不能為0 所以source2.txt的第一行需保留為空 兩邊source資料行數不一樣的話 多的就不會輸出了 我寫的話大概就是這樣 期待有高手用更簡單的概念寫出你的需求 附上測試檔 https://goo.gl/LEpwzr -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.60.208 ※ 文章網址: https://www.ptt.cc/bbs/Windows/M.1473860254.A.F50.html

09/14 22:44, , 1F
感謝!!加上一個大數補齊位數我也正好有在stack overflow
09/14 22:44, 1F

09/14 22:44, , 2F
看到 不過skip的用法我是第一次學到
09/14 22:44, 2F
文章代碼(AID): #1NsLAUzG (Windows)
文章代碼(AID): #1NsLAUzG (Windows)