标题: [文件操作] 【已解决】批处理如何读取文本中列出的系统变量并显示出变量值 [打印本页]
作者: 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如下- @echo off&setlocal enabledelayedexpansion
- set n=0
- for /f "tokens=2 delims==" %%i in (a.txt) do (
- set /a n+=1
- if !n!==3 set v3=%%i
- )
- echo %v3%
- 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 编辑
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=2 delims==" %%i in ('more +7 "%~f0"') do (
- set /a n+=1
- if !n!==3 call set v3=%%i
- )
- echo %v3%
- pause&exit
- 1.a=1
- 2.b=2
- 3.c=%date:~0,4%
复制代码
又或者- @echo off
- for /f "delims=" %%i in ('findstr "^3\." "%~f0"') do call set #%%i
- echo.%#3.c%
- pause&exit
- 1.a=1
- 2.b=2
- 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后面,- @echo off&setlocal enabledelayedexpansion
- set n=0
- for /f "tokens=2 delims==" %%i in (a.txt) do (
- set /a n+=1
- if !n!==3 set v3=%%i
- )
- call.echo %v3%
- echo 123 >>d:\%v3%.txt
复制代码
这样就无法正确显示文件名。
如果在bat中定义,那这个问题就没有意义了。
作者: WHY 时间: 2015-11-16 11:35
本帖最后由 WHY 于 2015-11-16 12:41 编辑
- @echo off
- (for %%i in (1 1 1) do set /p v=)<a.txt
- for /f "tokens=2delims==" %%i in ('call echo;%%v%%') do echo 123 >>"%%i.txt"
复制代码
作者: terse 时间: 2015-11-16 11:55
怎么不行?- if !n!==3 call set v3=%%i
复制代码
作者: setup 时间: 2015-11-18 16:40
回复 7# terse
这句代码显示的结果是 echo处于关闭状态,不知为何?
感谢回复,楼上已经解决问题,学习了!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |