[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 求助批处理如何将FindStr的结果输出给Set 呢?

本帖最后由 smatenchen 于 2022-11-13 10:16 编辑



求助,如何将FindStr的结果输出给Set 呢?


1,
如何将,
  1. Echo 12345 | FindStr /B /I 123
复制代码
的结果输出给 Set aaa= 呢?


2,
当然,可以借助For /F 命令把结果输出,类似 Set aaa=%%a。


3,
请问大神,有无更简便的方法呢?
类如,
  1. Set aaa=<(Echo 12345 | FindStr /B /I 123)
复制代码
,这样的命令,有吗?
我试过了,行不通,结果是找不到文件。


4,
请大神帮忙!
非常感谢!

回复 1# qixiaobin0715 hfxiang idwma BAT221110


1,
请大神帮忙!
非常感谢!

TOP

http://www.bathome.net/thread-51954-1-1.html

参考此贴六楼,不知道对你有没有帮助
bat小白,请多指教!谢谢!

TOP

本帖最后由 qixiaobin0715 于 2022-11-12 09:11 编辑

不要突发奇想了,这条路行不通。多条命令是通过管道(|)或者组合命令(&、&&、||等)来进行连接的,你这样不伦不类的,会造成程序在逻辑上的混乱。再说你举的例子也是有问题的,这么明显直接:
set aa=12345
不就行了。这个够简单吧

TOP

回复 3# 77七
或者参考6楼该成这样?
  1. @echo off
  2. Echo 12345 | FindStr 123 && set "a=yes" || set "a=no"
  3. echo %a%
  4. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 3# 77七

TOP

回复 5# 77七


1,
非常感谢!


2,
我要的是Set aaa=12345,或者是Set aaa=%%a。


set "a=yes",set "a=no"
这个,不是我想要的。


3,
感谢大神的帮忙!

TOP

回复 4# qixiaobin0715 terse BAT221110 hfxiang idwma


1,
非常感谢!


2,
这个问题,其实与删除1.txt里[222]段落里各行的问题,是相连的问题。


Echo 12345,其中12345是未知的,也就是,它相当于是For里的%%a,
所以,你笑出声的set aaa=12345,是不存在的,因为完全不知道它具体会是什么。


更具体一点,它代表的是1.txt里的各行,只知道1.txt里有的行具有某些特征,
比如,它是段落名行,如[222],[???]等。


有的行具有这样的特征,第一个字符是[,比如段落名行,就具有这样的特征。


因为只知道有的行具有这样的特征,其它信息未知。
设为未知,是想让它具有通用性,而不想让它只能在特殊条件下使用。


所以,我想把1.txt里的各行通过 | 给FindStr去过滤,其结果要输出出来。
现在,问题就卡在如何把FindStr过滤后的结果输出出来。


当然,我早说过,可以借助For /F 命令把结果输出,类似 Set aaa=%%a。


FindStr过滤后的结果,我也想到了1个输出办法。
但目前我知道的输出办法,很少,太有限了,我不满意。
所以,再发帖,来求助各位大神了。


3,
请大神们出手帮忙!
非常感谢!

TOP

"所以,我想把1.txt里的各行通过 | 给FindStr去过滤,其结果要输出出来。
现在,问题就卡在如何把FindStr过滤后的结果输出出来。"
这放在1楼说不好吗...1楼描述都不清晰,大家怎么帮助你...看似1234点,实则大家都不知道你在说什么...

输出到文本里呢?
  1. (findstr 123 "1.txt")>>out.txt
复制代码
(发帖建议参考有偿求助区的格式发帖
需求描述:
(1)系统环境(XP/Win7/Win10/Win11,中文版/英文版,专业版/家庭版/精简版,等)
(2)想要实现的功能的具体描述
(3)测试数据及期待结果
(4)其它补充信息
bat小白,请多指教!谢谢!

TOP

本帖最后由 smatenchen 于 2022-11-13 10:14 编辑

回复 9# 77七 qixiaobin0715 terse BAT221110 hfxiang idwma
  1. (findstr 123 "1.txt")>>out.txt
复制代码



1,
非常感谢!


2,
这样的输出方式,我也想到了。


3,
我设定的场景是这样的,
  1. For /F %%a In (1.txt) Do Echo %%a| FindStr 123
复制代码


把1.txt里的每一行交给FindStr去过滤出具有123字符的那些行,
再把过滤得到的行输出出来。


过滤到x1行含有123字符,就对x1行采取a1处理方法。
过滤到x2行没有123字符,就对x2行采取a2处理方法。


这其中,就还有判断的步骤,类似If命令用法。


我的想法,大致如此,但我不知道如何用 | 把这些命令连接出来。


4,
另外,
用批处理命令,如何改变1.txt的编码格式,从ansi改为utf-8呢?


5,
请大神们帮忙!
非常感谢!

TOP

回复 10# smatenchen
这样不知道对不对
  1. @echo off
  2. For /F %%a In (1.txt) Do (
  3.   Echo %%a| FindStr 123 && ( echo 正在处理含123的:%%a ) || ( echo 正在处理不含123的:%%a )
  4. )
  5. pause
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 smatenchen 于 2022-11-13 10:15 编辑

回复 11# 77七 qixiaobin0715 terse BAT221110 hfxiang idwma

  1. @echo off
  2. For /F %%a In (1.txt) Do (
  3.   Echo %%a| FindStr 123 && ( echo 正在处理含123的:%%a ) || ( echo 正在处理不含123的:%%a )
  4. )
  5. pause
复制代码



1,
非常感谢!


2,
我的想法是,到Echo %%a| FindStr 123这一步时,把结果导出来,比如,
把它设为某个变量,以后随时都可以调用它。只是Echo %%a,是不够的。


还有,就是如何让它起判断语句的作用,用FindStr过滤后给出1个判断结果,
再据此,连接1个命令对它做处理。类似,for里的do,if后接的命令。


3,
我的想法,很奇怪,但会非常有用。


例如,删除1.txt里某段落里各行的想法,我参考了大神们的解法后,
再对代码调整,修改后,已写出了批处理命令,现在已可以实用了。


4,
请大神们帮忙!
非常感谢!

TOP

本帖最后由 77七 于 2022-11-13 11:42 编辑
  1. @echo off
  2. For /F %%a In (1.txt) Do (
  3.   Echo %%a| FindStr 123 && ( set "h=%%a" ) || ( set "k=%%a" )
  4. )
  5. rem h为包含 k为不包含
  6. pause
复制代码
自己加一个不就行了...
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. For /F %%a In (1.txt) Do (
  4.   Echo %%a| FindStr 123 && ( set "h=%%a" & call :al ) || ( set "k=%%a" & call :a2 )
  5. )
  6. pause
  7. :al
  8. echo al方法正在处理含123:!h!
  9. exit /b
  10. :a2
  11. echo a2方法正在处理不含123:!k!
  12. exit /b
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2022-11-13 12:01 编辑

"比如,
把它设为某个变量,以后随时都可以调用它。"
"随时"不知道如何理解...手动处理吗...

"还有,就是如何让它起判断语句的作用,用FindStr过滤后给出1个判断结果,
再据此,连接1个命令对它做处理。类似,for里的do,if后接的命令。"

你得具体举例,不要只描述,要提供测试数据,及期待效果。不要说的太笼统。
你重新编辑1楼吧,说详细点,找大神帮你,一次性说清楚问题。
(发帖建议参考有偿求助区的格式发帖
需求描述:
(1)系统环境(XP/Win7/Win10/Win11,中文版/英文版,专业版/家庭版/精简版,等)
(2)想要实现的功能的具体描述
(3)测试数据及期待结果
(4)其它补充信息
bat小白,请多指教!谢谢!

TOP

本帖最后由 smatenchen 于 2022-11-13 17:08 编辑

回复 13# 77七 qixiaobin0715 terse BAT221110 hfxiang idwma

1,
非常感谢!


2,
你的代码的确有用。感谢!


没想到,会这么简单。
你的提示,很有用,帮忙很大。


3,
其中,& call :al可以换成& goto :al吗?


4,
感谢大神们帮忙!

TOP

返回列表