标题: [文本处理] [已解决]批处理怎样只保留带有指定字符的行,其余行删除,然后删第二列,感谢! [打印本页]
作者: quartz123 时间: 2014-7-10 15:41 标题: [已解决]批处理怎样只保留带有指定字符的行,其余行删除,然后删第二列,感谢!
- @echo off&setlocal ENABLEDELAYEDEXPANSION
- set record=同期_不可用.txt
- (for /f "delims=" %%j in (!record!) do (
- set "str=%%j"
- if "!str:~,1!" EQU "6" (echo SH!str:,=!) else (echo SZ!str:,=!)
- ))>同期.txt
- del /q "同期_不可用.txt"
- pause
复制代码
执行后得出的txt如下(一部份):
SZ000014 2014中报
SZ000018 2014中报 100.00
SZ000025 2014中报 52.00
SZ000029 2014中报 129.88
SZ000033 2014一季报 -23.17
SZ000033 2014中报 -310.34
SZ000045 2014中报 -174.00
SZ000050 2014中报 230.00
SZ000059 2014中报 -704.90
SZ300323 2014年报
SZ300324 2014年报
SZ300327 2014年报 -20.00
这是现用的命令,请老师们帮忙在此命令里加放几句, 使之仅留下带有"2014中报"字符的行,没此字符的行全部删除(删除中间行后,上下行之间不留空行),然后再把第二列全部删除,第一列和第三列之间留一个"tab"的位置,请问要怎么写,非常感谢!!
作者: CrLf 时间: 2014-7-10 16:30
把复制代码
改成- in ('findstr 2014中报 !record!') do
复制代码
作者: quartz123 时间: 2014-7-10 16:38
本帖最后由 quartz123 于 2014-7-10 16:41 编辑
回复 2# CrLf
非常感谢老师帮助!
请问老师在此基础上如何删除第二列,使第一列和第三列中间只留一个"tab"的位置
还有,如果我要同时保留带有"2014年报"字样的行,是不是这样写呢:in ('findstr 2014中报 and 2014年报 !record!') do
麻烦了!
作者: terse 时间: 2014-7-10 17:44
本帖最后由 terse 于 2014-7-10 17:47 编辑
回复 3# quartz123 - @echo off&setlocal enabledelayedexpansion
- set record=同期_不可用.txt
- for /f "delims=U" %%i in ('cmd /u /c echo 唉') do set "tab=%%i"
- (for /f "tokens=1,2*" %%j in ('findstr /i 2014中报 !record!') do (
- set "str=%%j%tab%%%l"
- if "!str:~,1!" EQU "6" (echo SH!str:,=!) else (echo SZ!str:,=!)
- ))>同期.txt
- del /q "同期_不可用.txt"
- pause
复制代码
保留年报- findstr /i "\<2014中报\> \<2014年报\>" !record!
复制代码
作者: quartz123 时间: 2014-7-10 21:11
回复 4# terse
非常完美,非常感谢老师,没分了,明天来加!!
作者: quartz123 时间: 2014-7-13 19:50
回复 quartz123 保留年报
terse 发表于 2014-7-10 17:44
很感谢老师出手,很完美了,可是我发现当生成的最终txt文件中第二列为空的话(就是图中蓝色框框的地方),股票软件就不会识读(真不智能。。。),能否再请老师出手帮后面为空的部份自动填为"0.00",真是麻烦老师了!
作者: terse 时间: 2014-7-13 22:46
回复 6# quartz123 - @echo off&setlocal enabledelayedexpansion
- set record=同期_不可用.txt
- for /f "delims=U" %%i in ('cmd /u /c echo 唉') do set "tab=%%i"
- (for /f "tokens=1,2*" %%i in ('findstr /i 2014中报 !record!') do (
- if "%%k" == "" (set "str=%%i%tab%0.00") else (set str=%%i%tab%%%k)
- if "!str:~,1!" EQU "6" (echo SH!str:,=!) else (echo SZ!str:,=!)
- ))>同期.txt
- del /q "同期_不可用.txt"
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |