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

[文本处理] [已解决]批处理find命令的输出能不能直接用set定义成/赋值给变量?

[复制链接]
 楼主| 发表于 2011-10-18 19:40:52 | 显示全部楼层
回复 10# CrLf


如目前不考虑效率,只求能在一行完成此命令呢。

呵呵!劳心了。
发表于 2011-10-18 19:46:59 | 显示全部楼层
回复 16# guaiwu


这样算一行吗?
  1. @echo off & setlocal enabledelayedexpansion & (sort 600050.txt | find  "☆曾用名")>%temp%/1.txt & set /p a=<%temp%/1.txt & echo !a:~0,-5!
复制代码
发表于 2011-10-18 21:08:23 | 显示全部楼层
回复 13# powerbat


    精彩!我倒是知道管道前后存在内部命令或语块时会开启新的 cmd 环境,但是忽略了这个 cmd 是子进程,它继承但并不与父进程共享变量环境。
   如此一来,这个谜题终于有了最合理的解释...又谈到 verybat,照例干号一下,为什么我学批不早两年啊~
发表于 2011-10-18 21:14:16 | 显示全部楼层
回复 16# guaiwu


    不是已经有人给了吗?像 powerbat 说的那样在子进程中赋值、在子进程中调用就可以呀:
  1. find "☆曾用名" 600050.txt|cmd /v /c "set /p var=&echo !var!"
复制代码
或者 8 楼 for 的代码也可以啊,使用后有何处不符合要求呢?
   不过还是建议用 8 楼方案,毕竟 13 楼的技巧虽深刻,但此时并不合适。
 楼主| 发表于 2011-10-18 22:30:39 | 显示全部楼层
回复 19# CrLf


按照你的代码,省略sort、more、type等命令那个去执行  小弟琢磨觉得有两个问题

第一,如果只用find "☆曾用名" 600050.txt 命令会在多一个不需要的 ---------- 11.TXTt这一段
第二,即使用了findstr命令,---------- 11.TXT解决了  但是
  1. setlocal enabledelayedexpansoin
  2. find "☆曾用名" 600050.txt | cmd /v /c "set /p var="&echo !var!
  3. pause
复制代码
一样出错。
echo 显示不了了!var!
发表于 2011-10-18 23:21:48 | 显示全部楼层
本帖最后由 CrLf 于 2011-10-18 23:23 编辑

回复 20# guaiwu


    那是因为你的 set /p 与 echo !var! 不在同一个进程中,先执行 【find "☆曾用名" 600050.txt | cmd /v /c "set /p var="】成功赋值,然后退出子进程后才执行 echo !var!,而此时已经是在父进程中了,子进程的变量环境随着子进程的结束已经随之销毁,当然取不到。而且你开了变量延迟又没有把 !var! 转义,要么先不要开变量延迟,要么就转义 !var!,修改如下:
  1. find "☆曾用名" 600050.txt | cmd /v /c "set /p var=&echo !var!"
  2. pause
复制代码
  1. setlocal enabledelayedexpansoin
  2. find "☆曾用名" 600050.txt | cmd /v /c "set /p var=&echo ^!var^!"
  3. pause
复制代码
发表于 2011-10-19 00:40:46 | 显示全部楼层
13L的代码却实很精彩,
不过说实话,感觉进程这个词还是大了些。引号用的非常到位(给力)
 楼主| 发表于 2011-10-19 16:48:04 | 显示全部楼层
回复 21# CrLf


如图显示  加上了延迟变量。还是不能显示!var!变量。
发表于 2011-10-19 17:12:44 | 显示全部楼层
回复 22# wc726842270


为什么说进程这个词还是大了些?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 11:37 , Processed in 0.015302 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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