标题: [文本处理] [已解决]读取文件第一行内容并输出的批处理如何理解? [打印本页]
作者: 惆怅而又凄凉 时间: 2019-3-28 15:29 标题: [已解决]读取文件第一行内容并输出的批处理如何理解?
本帖最后由 惆怅而又凄凉 于 2019-3-30 22:40 编辑
- @Echo Off
- For /f "tokens=1* delims=:" %%i in ('Type 123.txt^|Findstr /n ".*"') do (
- If "%%i"=="1" Echo 第一行 %%j
- If "%%i"=="2" Echo 第二行 %%j
- If "%%i"=="3" Echo 第三行 %%j
- )
- Pause
复制代码
请大神讲解一下%%i 和%%j的关系。
不是很明白那个%%j是怎么来的。
也不太明白为什么%%i改成其他变量后就无法读取了
作者: ivor 时间: 2019-3-28 15:36
还不如ps方便:
第一行复制代码
第二行复制代码
.....
作者: 惆怅而又凄凉 时间: 2019-3-28 16:12
回复 2# ivor
我这是个三千多行的bat~转ps1太麻烦了。
作者: bailong360 时间: 2019-3-28 19:48
批处理for语句从入门到精通: http://www.bathome.net/thread-2189-1-1.html
话说就标题"读取文件第一行内容"而言
这样就行了吧- set /p l1=<123.txt
- echo %l1%
复制代码
作者: 老刘1号 时间: 2019-3-28 20:25
本帖最后由 老刘1号 于 2019-3-28 20:27 编辑
(set /p .l1=&set /p .l2=&set /p .l3=)<1.txt
set .l
仅支持ansi或纯英文utf-8编码的文本
作者: 惆怅而又凄凉 时间: 2019-3-29 19:01
回复 4# bailong360
我主要是想明白那个%%i和%%j是什么关系,倒不是问如何读取文件第一行~
作者: 惆怅而又凄凉 时间: 2019-3-29 19:01
回复 5# 老刘1号
我主要是想明白那个%%i和%%j是什么关系,倒不是问如何读取文件第一行~
作者: /zhqsystem/zhq 时间: 2019-3-30 00:11
主楼示例解析
将字符串以:分割成两列,%%i占用第一列,*占用第二列,对比第一列回显第二列[当为*时,则默认余下所有占用一个变量%%j]
%%j跟随tokens的值,示例:tokens=1,5,8,*[建议按照递增顺序写] 则对应序列变量为 1=%%i,5=%%j,8=%%k,*=%%l[此时的%%l为余下所有][没有值时默认为空值][大于%%z变量时自动去除后边所有]
作者: 惆怅而又凄凉 时间: 2019-3-30 20:57
本帖最后由 惆怅而又凄凉 于 2019-3-30 20:59 编辑
回复 8# /zhqsystem/zhq
感谢!
那请问一下,这个“默认”j是系统默认的吗?
因为我试着把I改成A之后就不生效了,所以很疑惑这个JKL是如何默认进去的。
这样才好知道以后如果遇到其他场合需要使用到多个变量时该如何调用。
作者: 523066680 时间: 2019-3-30 21:39
本帖最后由 523066680 于 2019-3-30 22:03 编辑
回复 9# 惆怅而又凄凉
1. 论坛有 for 教学
2. 在命令行输入 for /? 查看帮助, 把里面的示例过几遍,里面有讲到- %i 在 for 语句中显式声明,%j 和 %k 是通过
- tokens= 选项隐式声明的。可以通过 tokens= 一行
- 指定最多 26 个符号,只要不试图声明一个高于字母 "z" 或
- "Z" 的变量。请记住,FOR 变量是单一字母、分大小写和全局的变量;
- 而且,不能同时使用超过 52 个。
复制代码
但是不要局限于各种说明,多尝试
比如这样也是可以的- Terminal>@for /f "tokens=1,2* delims==" %中 in ('set a') do @echo %丮
复制代码
输出结果,a 开头的环境变量的值- C:\ProgramData
- C:\Users\Vulkan\AppData\Roaming
复制代码
作者: 惆怅而又凄凉 时间: 2019-3-30 22:40
回复 10# 523066680
感谢!
作者: /zhqsystem/zhq 时间: 2019-3-31 15:34
回复 9# 惆怅而又凄凉
%%i是一个起始变量都是顺序到z区分大小写,如果是%%a则后边是%%a----%%z,如果是%%A则%%A--%%z,如果是%%z,那么只能有%%z的值[%%Z相同]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |