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

[文本处理] [已解决]批处理命令findstr匹配不到特殊字符的问题

[复制链接]
发表于 2022-9-26 11:03:28 | 显示全部楼层 |阅读模式
本帖最后由 waitfortea 于 2022-9-28 15:17 编辑

━/
┣━我的资源
┃  ┣━慕课破解
┃  ┃  ┣━SoutiPro浏览器.zip
┃  ┣━【1】Python初级(必学)
┃  ┃  ┣━【01】和【02】课程(配套课件和源码).zip
┃  ┃  ┣━【01】Python基础语法(必学)
┃  ┃  ┃  ┣━第8节 列表和元组
┃  ┃  ┃  ┃  ┣━27-列表复制数据.mp4
┃  ┃  ┃  ┃  ┣━18-下标.mp4
┃  ┃  ┃  ┃  ┣━28-列表的遍历之while.mp4
┃  ┃  ┃  ┃  ┣━26-列表修改数据.mp4
┃  ┃  ┃  ┃  ┣━31-随机分配办公室的步骤分析.mp4
┃  ┃  ┃  ┃  ┣━22-列表增加数据之append.mp4
┃  ┃  ┃  ┃  ┣━25-列表删除数据.mp4
┃  ┃  ┃  ┃  ┣━35-定义元组.mp4
┃  ┃  ┃  ┃  ┣━32-随机分配办公室的实现代码.mp4
┃  ┃  ┃  ┃  ┣━33-列表总结.mp4
┃  ┃  ┃  ┃  ┣━20-判断是否存在.mp4
┃  ┃  ┃  ┃  ┣━36-元组常见操作之查找.mp4
┃  ┃  ┃  ┃  ┣━37-元组数据的修改操作.mp4
┃  ┃  ┃  ┃  ┣━24-列表增加数据之insert.mp4
┃  ┃  ┃  ┃  ┣━17-列表简介.mp4
┃  ┃  ┃  ┃  ┣━38-元组的总结.mp4
┃  ┃  ┃  ┃  ┣━23-列表增加数据之extend.mp4
┃  ┃  ┃  ┃  ┣━21-体验案例-判断是否存在.mp4
┃  ┃  ┃  ┃  ┣━19-查找函数.mp4
┃  ┃  ┃  ┃  ┣━34-体验元组.mp4
┃  ┃  ┃  ┃  ┣━30-列表嵌套.mp4
┃  ┃  ┃  ┃  ┣━29-列表的遍历之for.mp4
┃  ┃  ┃  ┣━第9节 字典和集合
┃  ┃  ┃  ┃  ┣━04-字典常用操作之删除.mp4
┃  ┃  ┃  ┃  ┣━05-字典常用操作之修改.mp4
┃  ┃  ┃  ┃  ┣━16-集合总结.mp4
┃  ┃  ┃  ┃  ┣━10-字典的循环遍历之键值对(拆包).mp4
┃  ┃  ┃  ┃  ┣━03-字典常用操作之新增.mp4
┃  ┃  ┃  ┃  ┣━09-字典的循环遍历之键值对.mp4
┃  ┃  ┃  ┃  ┣━11-字典的总结.mp4
┃  ┃  ┃  ┃  ┣━07-字典的循环遍历之key.mp4
┃  ┃  ┃  ┃  ┣━08-字典的循环遍历之value.mp4
┃  ┃  ┃  ┃  ┣━15-集合常见操作之查找数据.mp4
┃  ┃  ┃  ┃  ┣━13-集合常见操作之增加数据.mp4
┃  ┃  ┃  ┃  ┣━06-字典常用操作之查找.mp4
┃  ┃  ┃  ┃  ┣━12-创建集合.mp4
┃  ┃  ┃  ┃  ┣━14-集合常见操作之删除数据.mp4
对如上的文本sss.txt,findstr "┃  ┃  ┃  ┃  ┣━" sss.txt没有输出
发表于 2022-9-26 11:14:19 | 显示全部楼层
  1. findstr /C:"┃  ┃  ┃  ┃  ┣━" sss.txt
复制代码
发表于 2022-9-26 11:17:11 | 显示全部楼层
回复 1# waitfortea


搜索的字符串包含空格的时候,需要使用 /c:
参考:http://bbs.bathome.net/thread-14682-1-1.html
 楼主| 发表于 2022-9-26 11:44:18 | 显示全部楼层
回复 3# Batcher


    同样的文本 为什么for /f "delims=" %%a in (sss.txt) do (echo %%a)正常输出
但是 for /f "delims=,skip=1" %%a in (sss.txt) do (echo %%a) 非但没有跳过第一行,反而有的行输出都不完整了
发表于 2022-9-26 12:00:28 | 显示全部楼层
回复 4# waitfortea


    for /f "skip=1 delims="
 楼主| 发表于 2022-9-26 12:17:15 | 显示全部楼层
回复 5# Batcher


    感谢大佬 明白了 但是我发现这些开关的组合在您的教程里好像都没有提到,是因为教程是基础篇的关系吗
 楼主| 发表于 2022-9-26 14:10:10 | 显示全部楼层
回复 5# Batcher
  1. @echo off
  2. chcp 65001
  3. setlocal enabledelayedexpansion
  4. cd /d "%~dp0"
  5. cd. >"%~dp0a.txt"
  6. for /f "skip=1 delims=" %%a in (sss.txt ) do (
  7. set dir=%%a
  8.         echo !dir!1
  9.         set dir=!dir:┃  ┃  ┃  ┃  ┣━=5\!
  10.         set dir=!dir:┃  ┃  ┃  ┣━=4\!       
  11.         set dir=!dir:┃  ┃  ┣━=3\!
  12.         set dir=!dir:┃  ┣━=2\!
  13.         set dir=!dir:┣━=1\!
  14.         echo !dir!1
  15.         >>"%~dp0a.txt" echo !dir!
  16.         )
复制代码
命令如上,同样的文本,想问下为什么输出的dir后面多了很多空格,明明替换之前都没有,而为什么替换之后有
发表于 2022-9-26 14:14:19 | 显示全部楼层
回复 6# waitfortea


for命令教程第22页提到:
tokens 和 delims 同时出现时,建议把 delims 放在 tokens 后面。

没有提到skip、delims、tokens同时出现的情况。把 delims 放在最后。
发表于 2022-9-26 14:16:35 | 显示全部楼层
回复 7# waitfortea


    请检查你的代码第10行结尾是否有多余的空格
 楼主| 发表于 2022-9-26 14:23:26 | 显示全部楼层
回复 9# Batcher


    还真有,我去,连set也要计算空格的,没有想到,可这样的话应该理论是只有有这个字符的行才会有空格,那我怎么所有行都有空格呢,不知道我理解的对不对,还有感谢大佬解答
 楼主| 发表于 2022-9-26 14:25:34 | 显示全部楼层
回复 8# Batcher


    这个说法好像不太对,因为出现”tokens=1-2, delims=\“或者”tokens=1-2, delims=\ “的时候都无法识别分隔符,不知道我理解得对不对
发表于 2022-9-26 14:27:40 | 显示全部楼层
回复 10# waitfortea


给set命令加上双引号是个好习惯,例如:
set "dir=!dir:┃  ┃  ┃  ┣━=4\!"

评分

参与人数 1技术 +1 收起 理由
Echo11 + 1 很赞同!

查看全部评分

发表于 2022-9-26 14:28:54 | 显示全部楼层
回复 11# waitfortea


    没啥特殊情况的话,都把 delims 放在最后
 楼主| 发表于 2022-9-26 14:29:22 | 显示全部楼层
回复 12# Batcher
确实,因为我之前一致认为!!或者%%是确认边界的,这个其实是错误的
 楼主| 发表于 2022-9-26 14:30:43 | 显示全部楼层
回复 13# Batcher


    ”tokens=1-2, delims=\ “ 这个不是把delims放到最后了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 15:33 , Processed in 0.017624 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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