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

[文本处理] 求助批处理循环处理行的第一列输出对应的第二列

文件名jobnamecheck.txt。
100034::0
100056::2
100047::4
100021::0

需求如下:以::做分割,批处理第一列,然后根据第一列的某个参数能输出对应的第二列的数据。麻烦大佬帮忙写个bat脚本我只会linux的。linux的命令是这样的:
  1. #!/bin/bash
  2. function check() {
  3.   status=(` cat /tmp/jobnamecheck.txt|grep "^$1::"|awk -F '::' '{print $2}'`)
  4.   printf "$status"
  5. }
  6. $1 $2
复制代码

回复 15# 572105002

?直接到我签名的地址里下载完放到 PATH 中的目录里(比如 C:\Windows\System32 )就行了
或者和脚本放在同一目录下

TOP

回复 14# bailong360

有是有,gawk我装好了,grep总是安装不好,环境变量不知道怎么配

TOP

题外话:grep, gawk 这种工具也有 Windows 移植版(

TOP

回复 12# went
大佬,我再多问一句,这个文件里的两列数据是不是分别用%%i、%%j表示的,求解答

TOP

回复 10# Batcher


    嗯没什么作用,多写了一个,已修改

TOP

回复 3# netdzb


grep "^$1::" 意思是查找以某个字符串开头的行,效果类似于Windows的 findstr "^%1::"
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# went


delims=:: 没有实际发生作用吧
delims=: 这样就够了
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 went 于 2020-4-15 15:11 编辑

如果没找到就不会有任何输出
  1. @echo off & for /f "usebackq tokens=1-2 delims=:" %%i in ("tes.txt") do if "%%i"=="%1" echo %%j
复制代码
回复 8# 572105002

TOP

回复 5# went
大佬,能不能做成这样ceshi.bat 后面跟第一列的任意数据,就能输出对应的第二列数据。
示例
ceshi.bat 100056    输出2

TOP

回复 6# netdzb


    /r只能遍历文件,/f是万能的,哪个用着方便就用那个

TOP

回复 5# went

我就一直不明白for/f和for/r之间有什么区别?

TOP

本帖最后由 went 于 2020-4-15 15:12 编辑

输入第一列,输出第二列这意思吗
  1. @echo off
  2. set /p "input=input:"
  3. for /f "tokens=1-2 delims=:" %%i in ('type "tes.txt"') do if "%%i"=="%input%" echo %%j && set "find=true"
  4. if not "%find%"=="true" echo %input% not found!
  5. pause&exit
复制代码

TOP

回复 3# netdzb


    这个就属于linux的正则了,grep ‘^$1::’ 就是以::做分隔符匹配出第一列,^的作用就是为了第一列的数字绝句匹配,这一行简单理解就是,以::做分隔符循环匹配第一列,输出对应的第二列

TOP

回复 1# 572105002

我顺路请教一下,grep "^$1::"怎么理解?谢谢。

TOP

返回列表