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

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

本帖最后由 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,请问如何写代码?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 7# terse


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

TOP

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

TOP

本帖最后由 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

评分人数

    • setup: 测试通过,就要这个效果,谢谢!技术 + 1

TOP

本帖最后由 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中定义,那这个问题就没有意义了。

TOP

把a.txt第三行的%date:~0,4%改成2015

TOP

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

TOP

call echo.%v3%
1

评分人数

    • setup: 可以显示效果技术 + 1

TOP

返回列表