无忧启动论坛

标题: 批处理读取文本字符串 [打印本页]

作者: fuldho    时间: 2015-7-31 12:44
标题: 批处理读取文本字符串
本帖最后由 fuldho 于 2015-7-31 12:45 编辑

1.txt如下:

cd        1:2                  wdr                    3424         972

怎样读取 "1:2" 变量

不是固定字符,多个空格也不固定,
作者: dos时代菜鸟    时间: 2015-7-31 15:22
用 nset 读取 该行中第2个单词。

作者: wang_966    时间: 2015-7-31 21:21
本帖最后由 wang_966 于 2015-7-31 21:52 编辑

方法1:
写一个 0.BAT 内容如以下二行
for /f "tokens=1,2 delims= " %%i in (1.txt) do set j=%%j
echo %j%



(如果是每一行取得第二栏)方法2:
如何利用 仿unix/linux命令 sed 一次替换文字中的 "某些相似性的字串" ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=362520


sed -e "s/[!-~][!-~]*  *\([!-~][!-~]*\)  *.*/\1/" < 1.txt > output.txt
作者: fuldho    时间: 2015-8-1 22:38
楼上的
特出空格这样搞不定的

QQ图片20150801223627.jpg (47.25 KB, 下载次数: 89)

QQ图片20150801223627.jpg

作者: dos时代菜鸟    时间: 2015-8-2 10:54
原来是cmd 下的操作啊。那简单多了:

for /f "tokens=1,2 delims= " %%i in (1.txt) do(echo %%j)



作者: fuldho    时间: 2015-8-2 12:38
本帖最后由 fuldho 于 2015-8-2 12:39 编辑

我试过搞不定,不过我已经找到办法解决了,谢谢大家了。

有兴趣测试一下

Part.rar

116 Bytes, 下载次数: 22, 下载积分: 无忧币 -2


作者: dos时代菜鸟    时间: 2015-8-3 08:23
本帖最后由 dos时代菜鸟 于 2015-8-3 08:32 编辑
fuldho 发表于 2015-8-2 12:38
我试过搞不定,不过我已经找到办法解决了,谢谢大家了。

有兴趣测试一下


原来 间隔符 不是空格 而使 tab

part.7z (268 Bytes, 下载次数: 6)


其实 在 cmd 下 直接输入
  1. for /f "tokens=2" %c in (part.txt) do echo %c
复制代码

就可以 了,for 默认将 空格 、tab 当作分隔符。


作者: fuldho    时间: 2015-8-3 09:01
dos时代菜鸟 发表于 2015-8-3 08:23
原来 间隔符 不是空格 而使 tab

谢谢
我已经搞定,还要考虑间隔和空格双重问题
作者: 假大空    时间: 2015-10-23 21:20
本帖最后由 假大空 于 2015-10-26 23:05 编辑

@dos时代菜鸟:

想问下如果多行,只取第一行该如何弄?比如我有3张网卡。
for /f "tokens=15 delims=: " %%i in ('ipconfig ^| find /i "IPv4"') do @echo %%i
用冒号空格作间隔符,取得3张网卡的IP地址。但是我只想取第一张网卡的IP该如何写批处理呢?如果将变量赋值给新变量,只能得到最后一张网卡的IP,比如
for /f "tokens=15 delims=: " %%i in ('ipconfig ^| find /i "IPv4"') do set ip=%%i
@echo 获取的网卡IP为:%ip%

请问该怎样取得第一张或者第二张网卡的IP值呢?
补:原来要设变量延迟,已解决。


作者: ylh448    时间: 2015-11-7 17:29
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3