[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. (for /f "delims=" %%a in ('findstr /bev "[0-9][0-9]*" a.txt') do (
  3. echo,%%a
  4. ))>b.txt
  5. pause
复制代码
回复 1# pwq
1

评分人数

    • pwq: 乐于助人技术 + 1

TOP

不用type,直接findstr应当也行

TOP

是这样。批处理像传说的那样,坑不是一般的多。

TOP

回复 7# pwq
那是因为你不会用:3楼代码后面加上
>b.txt
试试

TOP

回复 10# terse
不妥。空行没保留。
2楼代码也去掉了空行。

TOP

本帖最后由 qixiaobin0715 于 2021-3-9 12:26 编辑

除了编码问题,可能还存在纯数字行末尾有不可见的空白字符。
  1. 将findstr /bev "[0-9][0-9]*"修改为findstr /r /bev /c:"[0-9][0-9]*[ ]*"试试
复制代码

TOP

本帖最后由 qixiaobin0715 于 2021-3-9 12:27 编辑

如果使用UTF-8编码,可将文本文件及批处理文件均另存为UTF-8 无签名编码,运行批处理:
  1. @echo off
  2. chcp 65001
  3. for /f "delims=" %%a in ('findstr /r /bev /c:"[0-9][0-9]*[ ]*" a.txt') do (
  4. echo,%%a
  5. )
  6. pause
复制代码

TOP

  1. type a.txt | findstr /r /v /c:"^[0-9][0-9]*[ ]*$">b.txt
复制代码

TOP

是的。[         ]*$表示行尾有0到任意多个空白字符构成。

TOP

返回列表