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

[文本处理] [已解决]读取文件第一行内容并输出的批处理如何理解?

本帖最后由 惆怅而又凄凉 于 2019-3-30 22:40 编辑
  1. @Echo Off
  2. For /f "tokens=1* delims=:" %%i in ('Type 123.txt^|Findstr /n ".*"') do (
  3. If "%%i"=="1" Echo 第一行 %%j
  4. If "%%i"=="2" Echo 第二行 %%j
  5. If "%%i"=="3" Echo 第三行 %%j
  6. )
  7. Pause
复制代码
请大神讲解一下%%i 和%%j的关系。

不是很明白那个%%j是怎么来的。
也不太明白为什么%%i改成其他变量后就无法读取了
www.imxyd.com

还不如ps方便:
第一行
  1. (gc .\123.txt)[0]
复制代码
第二行
  1. (gc .\123.txt)[1]
复制代码
.....
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 2# ivor


    我这是个三千多行的bat~转ps1太麻烦了。
www.imxyd.com

TOP

批处理for语句从入门到精通: http://www.bathome.net/thread-2189-1-1.html

话说就标题"读取文件第一行内容"而言
这样就行了吧
  1. set /p l1=<123.txt
  2. echo %l1%
复制代码

TOP

本帖最后由 老刘1号 于 2019-3-28 20:27 编辑

(set /p .l1=&set /p .l2=&set /p .l3=)<1.txt
set .l

仅支持ansi或纯英文utf-8编码的文本

TOP

回复 4# bailong360


    我主要是想明白那个%%i和%%j是什么关系,倒不是问如何读取文件第一行~
www.imxyd.com

TOP

回复 5# 老刘1号


    我主要是想明白那个%%i和%%j是什么关系,倒不是问如何读取文件第一行~
www.imxyd.com

TOP

主楼示例解析
将字符串以:分割成两列,%%i占用第一列,*占用第二列,对比第一列回显第二列[当为*时,则默认余下所有占用一个变量%%j]
%%j跟随tokens的值,示例:tokens=1,5,8,*[建议按照递增顺序写] 则对应序列变量为 1=%%i,5=%%j,8=%%k,*=%%l[此时的%%l为余下所有][没有值时默认为空值][大于%%z变量时自动去除后边所有]
1

评分人数

这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

本帖最后由 惆怅而又凄凉 于 2019-3-30 20:59 编辑

回复 8# /zhqsystem/zhq


    感谢!

那请问一下,这个“默认”j是系统默认的吗?
因为我试着把I改成A之后就不生效了,所以很疑惑这个JKL是如何默认进去的。
这样才好知道以后如果遇到其他场合需要使用到多个变量时该如何调用。
www.imxyd.com

TOP

本帖最后由 523066680 于 2019-3-30 22:03 编辑

回复 9# 惆怅而又凄凉


1. 论坛有 for 教学
2. 在命令行输入 for /? 查看帮助, 把里面的示例过几遍,里面有讲到
  1. %i 在 for 语句中显式声明,%j 和 %k 是通过
  2. tokens= 选项隐式声明的。可以通过 tokens= 一行
  3. 指定最多 26 个符号,只要不试图声明一个高于字母 "z" 或
  4. "Z" 的变量。请记住,FOR 变量是单一字母、分大小写和全局的变量;
  5. 而且,不能同时使用超过 52 个。
复制代码
但是不要局限于各种说明,多尝试

比如这样也是可以的
  1. Terminal>@for /f "tokens=1,2* delims==" %中 in ('set a') do @echo %丮
复制代码
输出结果,a 开头的环境变量的值
  1. C:\ProgramData
  2. C:\Users\Vulkan\AppData\Roaming
复制代码
1

评分人数

TOP

回复 10# 523066680


    感谢!
www.imxyd.com

TOP

回复 9# 惆怅而又凄凉


    %%i是一个起始变量都是顺序到z区分大小写,如果是%%a则后边是%%a----%%z,如果是%%A则%%A--%%z,如果是%%z,那么只能有%%z的值[%%Z相同]
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

返回列表