
批處理命令findstr判斷是否存在指定字符并替換輸出結果中有原始行內容是什么原因txt轉csv時遇到的問題,請高人指點想把一個txt文件換轉為csv,轉換后的csv文件要滿足:第二列后插入一列(即在每行的第20個字符前插入一列),值為最后一列的正負標識(正為B,負為S)注:txt 文件中各項間有空格和tab(見圖),數據很多,需要高效代碼。首先是用for讀文件,然后判斷是否有字符-(即負號),如有則將-替換為S (S后有tab),如沒有則在第20個字符前插入B (B后也有tab)最后,將str中tab替換為,后寫入csv.上網參考了很多代碼,都不行,請高人指點。我的代碼如下。
主要問題是:負數行會生成兩行!!!!請高人看看問題在哪?nclick="copycode($('code0'));">復制代碼
- @echo off
- @echo off&setlocal enabledelayedexpansion
- echo 92502 608-300>a.txt
- echo 92502 608 -1000>>a.txt
- echo 92502 6082500>>a.txt
- echo 92502 6086955>>a.txt
- echo 92502 6081800>>a.txt
- echo 92502 6084800>>a.txt
- for %%a in (a.txt) do (
- (for /f usebackq delims= %%b in (%%a) do (
- set str=%%b
- echo %%b | findstr /c:- && (set str=!str:-=S!
- ) || (set str=!str:~0,20!B!str:~20,8!
- )
- echo !str:=,!
- ))>%%~na.csv
- )

