找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 38061|回复: 6

[文本处理] [已解决]批处理怎样只保留带有指定字符的行,其余行删除,然后删第二列,感谢!

[复制链接]
发表于 2014-7-10 15:41:43 | 显示全部楼层 |阅读模式
  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2.     set record=同期_不可用.txt
  3.     (for /f "delims=" %%j in (!record!) do (
  4.             set "str=%%j"
  5.             if "!str:~,1!" EQU "6" (echo SH!str:,=!) else (echo SZ!str:,=!)
  6.     ))>同期.txt
  7.     del /q "同期_不可用.txt"
  8.     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"的位置,请问要怎么写,非常感谢!!
发表于 2014-7-10 16:30:33 | 显示全部楼层
  1. in (!record!) do
复制代码
改成
  1. in ('findstr 2014中报 !record!') do
复制代码
 楼主| 发表于 2014-7-10 16:38:47 | 显示全部楼层
本帖最后由 quartz123 于 2014-7-10 16:41 编辑

回复 2# CrLf


非常感谢老师帮助!
请问老师在此基础上如何删除第二列,使第一列和第三列中间只留一个"tab"的位置
还有,如果我要同时保留带有"2014年报"字样的行,是不是这样写呢:in ('findstr 2014中报 and 2014年报 !record!') do
麻烦了!
发表于 2014-7-10 17:44:41 | 显示全部楼层
本帖最后由 terse 于 2014-7-10 17:47 编辑

回复 3# quartz123
  1. @echo off&setlocal enabledelayedexpansion
  2. set record=同期_不可用.txt
  3. for /f "delims=U" %%i in ('cmd /u /c echo 唉') do set "tab=%%i"
  4. (for /f "tokens=1,2*" %%j in ('findstr /i 2014中报 !record!') do (
  5.     set "str=%%j%tab%%%l"
  6.      if "!str:~,1!" EQU "6" (echo SH!str:,=!) else (echo SZ!str:,=!)
  7. ))>同期.txt
  8. del /q "同期_不可用.txt"       
  9. pause
复制代码
保留年报
  1. findstr /i "\<2014中报\> \<2014年报\>" !record!
复制代码

评分

参与人数 1技术 +1 收起 理由
quartz123 + 1 非常完美,非常感谢老师!

查看全部评分

 楼主| 发表于 2014-7-10 21:11:12 | 显示全部楼层
回复 4# terse


    非常完美,非常感谢老师,没分了,明天来加!!
 楼主| 发表于 2014-7-13 19:50:13 | 显示全部楼层
回复  quartz123 保留年报
terse 发表于 2014-7-10 17:44



   
很感谢老师出手,很完美了,可是我发现当生成的最终txt文件中第二列为空的话(就是图中蓝色框框的地方),股票软件就不会识读(真不智能。。。),能否再请老师出手帮后面为空的部份自动填为"0.00",真是麻烦老师了!
发表于 2014-7-13 22:46:49 | 显示全部楼层
回复 6# quartz123
  1. @echo off&setlocal enabledelayedexpansion
  2. set record=同期_不可用.txt
  3. for /f "delims=U" %%i in ('cmd /u /c echo 唉') do set "tab=%%i"
  4. (for /f "tokens=1,2*" %%i in ('findstr /i 2014中报 !record!') do (
  5.      if "%%k" == ""  (set "str=%%i%tab%0.00") else (set str=%%i%tab%%%k)
  6.      if "!str:~,1!" EQU "6" (echo SH!str:,=!) else (echo SZ!str:,=!)
  7. ))>同期.txt
  8. del /q "同期_不可用.txt"        
  9. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
quartz123 + 1 再次感谢老师!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 07:50 , Processed in 0.019186 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表