找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28065|回复: 7

[文件操作] 【已解决】批处理如何读取文本中列出的系统变量并显示出变量值

[复制链接]
发表于 2015-11-5 10:29:43 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2017-3-29 21:00 编辑

有b.bat读取a.txt文件第三行内容。
a.txt如下
1.a=1
2.b=2
3.c=%date:~0,4%
...

b.bat如下
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=0
  3. for /f "tokens=2 delims==" %%i in (a.txt) do (
  4.         set /a n+=1
  5.         if !n!==3 set v3=%%i
  6. )
  7. echo %v3%
  8. pause
复制代码
运行结果显示%date:~0,4%,不能显示2015,请问如何写代码?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-11-5 10:48:21 | 显示全部楼层
call echo.%v3%

评分

参与人数 1技术 +1 收起 理由
setup + 1 可以显示效果

查看全部评分

发表于 2015-11-5 20:14:52 | 显示全部楼层
本帖最后由 pcl_test 于 2017-3-29 20:58 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2 delims==" %%i in ('more +7 "%~f0"') do (
  3.         set /a n+=1
  4.         if !n!==3 call set v3=%%i
  5. )
  6. echo %v3%
  7. pause&exit
  8. 1.a=1
  9. 2.b=2
  10. 3.c=%date:~0,4%
复制代码
又或者
  1. @echo off
  2. for /f "delims=" %%i in ('findstr "^3\." "%~f0"') do call set #%%i
  3. echo.%#3.c%
  4. pause&exit
  5. 1.a=1
  6. 2.b=2
  7. 3.c=%date:~0,4%
复制代码
发表于 2015-11-5 21:22:31 | 显示全部楼层
把a.txt第三行的%date:~0,4%改成2015
 楼主| 发表于 2015-11-16 09:36:24 | 显示全部楼层
本帖最后由 setup 于 2015-11-18 15:07 编辑

感谢大家的回复,一直忙的没机会回复,抱歉了!

2楼的可以实现显示效果。
3楼代码测试未通过,不知啥原因?
4楼这样改似乎就没有意义了。

另外,第三行如果是一个文件夹或文件的名字的一部分,就是在b.bat引用a.txt第三行做文件夹或文件名字,要在这个文件中写入数据,又怎么写?
跟在bat后面,
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=0
  3. for /f "tokens=2 delims==" %%i in (a.txt) do (
  4.         set /a n+=1
  5.         if !n!==3 set v3=%%i
  6. )
  7. call.echo %v3%
  8. echo 123 >>d:\%v3%.txt
复制代码
这样就无法正确显示文件名。
如果在bat中定义,那这个问题就没有意义了。
发表于 2015-11-16 11:35:44 | 显示全部楼层
本帖最后由 WHY 于 2015-11-16 12:41 编辑
  1. @echo off
  2. (for %%i in (1 1 1) do set /p v=)<a.txt
  3. for /f "tokens=2delims==" %%i in ('call echo;%%v%%') do echo 123 >>"%%i.txt"
复制代码

评分

参与人数 1技术 +1 收起 理由
setup + 1 测试通过,就要这个效果,谢谢!

查看全部评分

发表于 2015-11-16 11:55:59 | 显示全部楼层
怎么不行?
  1. if !n!==3 call set v3=%%i
复制代码
 楼主| 发表于 2015-11-18 16:40:03 | 显示全部楼层
回复 7# terse


    这句代码显示的结果是 echo处于关闭状态,不知为何?
感谢回复,楼上已经解决问题,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 11:25 , Processed in 0.022678 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表