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

作者: pendoth (46825)   2016-09-14 21:37:29
※ 引述《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
作者: wopicoun (挖屁康)   2016-09-14 22:44:00
感謝!!加上一個大數補齊位數我也正好有在stack overflow看到 不過skip的用法我是第一次學到

Links booklink

Contact Us: admin [ a t ] ucptt.com