Board logo

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

作者: setup    时间: 2015-11-5 10:29     标题: 【已解决】批处理如何读取文本中列出的系统变量并显示出变量值

本帖最后由 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,请问如何写代码?
作者: flyinnet9    时间: 2015-11-5 10:48

call echo.%v3%
作者: pcl_test    时间: 2015-11-5 20:14

本帖最后由 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%
复制代码

作者: wankoilz    时间: 2015-11-5 21:22

把a.txt第三行的%date:~0,4%改成2015
作者: setup    时间: 2015-11-16 09:36

本帖最后由 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中定义,那这个问题就没有意义了。
作者: WHY    时间: 2015-11-16 11:35

本帖最后由 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"
复制代码

作者: terse    时间: 2015-11-16 11:55

怎么不行?
  1. if !n!==3 call set v3=%%i
复制代码

作者: setup    时间: 2015-11-18 16:40

回复 7# terse


    这句代码显示的结果是 echo处于关闭状态,不知为何?
感谢回复,楼上已经解决问题,学习了!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2