标题: [文本处理] [已解决]批处理怎样提取第N行冒号以后的字符串并保存到文本? [打印本页]
作者: wangyangweb 时间: 2013-3-20 20:53 标题: [已解决]批处理怎样提取第N行冒号以后的字符串并保存到文本?
本帖最后由 wangyangweb 于 2013-3-21 10:18 编辑
username.txt 内容:
zhangsan
lisi
wangwu
...
假设有命令show
从username.txt中获取每个用户名作为show命令的参数,执行命令,如 show zhangsan info,其中show和info是固定模式,只有zhangsan是变量
执行 show zhangsan info 命令以后,显示内容如下:
name:zhangsan
sex:nan
age:33
birth:19800808
tel:13800138000
将第4行(如红色部分)冒号后面的内容+用户名输出保存到out.txt或excel(最好)里面,
格式:
zhangsan 19800808
lisi 19780101
....
即每执行一条show *** info命令就向输出文件写入一行固定格式记录
作者: BAT-VBS 时间: 2013-3-20 20:58
- @echo off
- (for /f %%a in (username.txt) do (
- for /f "tokens=2 delims=:" %%b in ('show %%a info ^| findstr "birth:"') do (
- echo %%a %%b
- )
- ))>out.csv
复制代码
作者: BAT-VBS 时间: 2013-3-20 20:59
如果需要分成两列- @echo off
- (for /f %%a in (username.txt) do (
- for /f "tokens=2 delims=:" %%b in ('show %%a info ^| findstr "birth:"') do (
- echo %%a,%%b
- )
- ))>out.csv
复制代码
作者: wangyangweb 时间: 2013-3-21 10:20
回复 3# BAT-VBS
很感谢你,但是没分了
作者: wangyangweb 时间: 2013-3-21 10:24
回复 3# BAT-VBS
再求教一个问题啊
假设我的机器是A,远程服务器是B,我用telnet登陆到服务器B,然后执行show命令。
然而,我在服务器B上没有写权限,只有读取权限,请问我能不能我的机器A上执行批处理文件,运行服务器B上的show命令,
读取的username.txt和要输出的out.csv都是我的机器A上的文件?
谢谢
作者: BAT-VBS 时间: 2013-3-21 11:20
回复 5# wangyangweb
Linux也许可以。Windows不知道。
作者: wangyangweb 时间: 2013-3-21 13:12
回复 6# BAT-VBS
哈哈,解决了,只要将本地的username.txt和批处理文件(test.bat)共享,供服务器远程调用就能解决
Forexample:
test.bat
@echo off
(for /f %%a in (\\192.168.1.1\share\username.txt) do (
for /f "tokens=2 delims=:" %%b in ('show username %%a info ^| findstr "birth"') do (
echo %%a,%%b
)
))>\\192.168.1.1\share\out.csv
服务器端执行call \\192.168.1.1\share\test.bat
作者: BAT-VBS 时间: 2013-3-21 17:16
回复 7# wangyangweb
你不是说在服务器B上没有写权限吗,怎么设置的共享啊?
作者: wangyangweb 时间: 2013-3-21 19:46
回复 8# BAT-VBS
192.168.1.1是客户端的IP,由客户端共享文件,服务器访问文件
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |