标题: [文本处理] 批处理for循环中的%%a为变量名时,如何获取其值? [打印本页]
作者: 0428_hai 时间: 2011-4-25 19:57 标题: 批处理for循环中的%%a为变量名时,如何获取其值?
- for /f %%a in (a.txt) do (
- ::a.txt文本中的内容为变量名,想在这儿引用这个变量,如何写代码?
- ::echo %%%a%,这样写不对。
- )
复制代码
2011-4-25 22:03:54更新问题如下:- @echo off
- SETLOCAL ENABLEDELAYEDEXPANSION
- ::------------以下代码生成测试用的文本文件test.txt-------
- >test.txt echo my
- >>test.txt echo name
- >>test.txt echo is jack
- >>test.txt echo 批处理 论坛
- >>test.txt echo bbs.bathome.cn
- ::------------以上代码用于生成测试用的文本文件test.txt-------
-
- for /f "delims=" %%a in (test.txt) do (
- set /a n+=1
- set !n!=%%a
- )
- for /l %%a in (1,1,%n%) do (
- echo !%%a!
- )
- pause>nul
复制代码
在以上代码中,我将test.txt文本中的每一行内容存入一系列变量中,这些变量名从1开始依次排列。
第二个for循环我使用了变量延迟来获取了这些变量名并读取了变量值。
我想,有没有办法不使用变量延迟来达到这个效果,不使用变量延迟如何在第二个for循环中读取test.txt中的内容呢?
使用 echo %%%a% 不可以达到效果,显示内容为一个%
作者: 冷玉公子 时间: 2011-4-25 20:10
本帖最后由 冷玉公子 于 2011-4-25 20:11 编辑
第一种方法 直接调用- @echo off
- for /f %%a in (a.txt) do echo %%a
- pause
复制代码
第二种方法 调用变量- @echo off
- for /f %%a in (a.txt) do (
- Set "Var=%%a"
- Call Echo !Var!
- pause
复制代码
建议有时间去看看这个
批处理for语句从入门到精通
http://bbs.bathome.net/thread-2189-1-1.html
作者: Batcher 时间: 2011-4-25 20:20
2# 冷玉公子
建议有时间看看这个:
批处理中的变量延迟扩展、变量嵌套
http://bbs.bathome.net/thread-2899-1-1.html
作者: 0428_hai 时间: 2011-4-25 22:10
主题帖更新,不知我的意思有没有说明白,望点化。
以前好像看到过相关方法,找不到了。。。。
作者: CrLf 时间: 2011-4-25 22:21
本帖最后由 zm900612 于 2011-4-25 22:27 编辑
在for中读取变量的办法有n种:- @echo off&setlocal enabledelayedexpansion
- for /f %%a in (a.txt) do (
- Set "Var=%%a"
- Echo !Var!
- pause
复制代码
- @echo off
- for /f %%a in (a.txt) do (
- Set "Var=%%a"
- Call Echo %%Var%%
- pause
复制代码
- @echo off
- for /f %%a in (a.txt) do (
- Set "Var=%%a"
- cmd /v:on Echo !Var!
- pause
复制代码
- @echo off
- for /f %%a in (a.txt) do (
- Set "Var=%%a"
- cmd /c Echo %%Var%%
- pause
复制代码
- @echo off
- for /f %%a in (a.txt) do (
- Set "Var=%%a"
- for /f "tokens=1* delims==" %%b in ('set Var') do echo %%c
- pause
复制代码
如果只需要显示,不需要做别的工作,那能不定义变量就尽量别定义:复制代码
复制代码
复制代码
复制代码
复制代码
复制代码
- @echo off
- for /f %%a in (a.txt) do echo %%a
- pause
复制代码
甚至fc都可以考虑
作者: 0428_hai 时间: 2011-4-25 22:30
5# zm900612
非常感谢#5的回复。
我的想法是这样的,第二个for中的形式变量%%a所指代的每一个元素实际是一个变量名,我想在这个for中获取%%a所指向的元素的变量值。。。
晕,绕晕了。。
作者: CrLf 时间: 2011-4-25 22:39
把那几行echo中的Var改成%%a就行了
作者: wankoilz 时间: 2011-4-26 09:24
楼主说的是变量的嵌套么,可以 echo !%%a!或者call echo %%%%a%%,需要提醒的是用第一种要先加上一行setlocal enabledelayedexpansion
作者: 0428_hai 时间: 2011-4-26 17:03
#8
所言极是,我已经试出来了。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |