标题: [其他] 批处理怎么在for循环中输出%%~变量名 [打印本页]
作者: fish 时间: 2010-8-4 04:15 标题: 批处理怎么在for循环中输出%%~变量名
代码如下:- @echo off
- for %%a in (1,2) do echo %%%%~a
- pause
复制代码
理想输出:
%%~a
%%~a
实际输出:
%1
%2
作者: sgaizxt001 时间: 2010-8-4 05:53
这个?- @echo off
- for /l %%i in (1,1,2) do echo %%%%~a
- pause
复制代码
设定循环次数一般是用for /l来控制。这里你的意思%%~a是一个字符串,只单纯的输出吗?
[ 本帖最后由 sgaizxt001 于 2010-8-4 05:55 编辑 ]
作者: wankoilz 时间: 2010-8-4 08:22
- @echo off&setlocal enabledelayedexpansion
- set x=~
- for %%a in (1,2) do echo %%%%!x!a
- pause
复制代码
要达到楼主目的,不要让%%和"变量名"或"~变量名"挨一起了,这样就不会被识别成变量。
!x!优先级比%%a型变量低,cmd首先寻找%%a型变量,发现是%%!x!a,不予替换值,然后替换!x!得到~。
[ 本帖最后由 wankoilz 于 2010-8-4 08:33 编辑 ]
作者: FOR 时间: 2010-8-4 11:16
这个只要不和前面的%%a重复就可以了,何必那么麻烦
for %%b in (c,d) do echo %%%%~a
作者: wankoilz 时间: 2010-8-4 12:29
原帖由 FOR 于 2010-8-4 11:16 发表
这个只要不和前面的%%a重复就可以了,何必那么麻烦
for %%b in (c,d) do echo %%%%~a
楼主说是显示“%%~变量名”,楼上的%%~a在for里面不是变量名。
我开始也犯了和楼上相同的错误。
作者: FOR 时间: 2010-8-4 14:29 标题: 回复 5楼 的帖子
如果真是这样的话,感觉是没事找事- @echo off
- for %%a in (1,2) do (
- set /p=%%%%<nul
- echo ~a
- )
- pause
复制代码
- @echo off
- for %%a in (1,2) do (
- set /p=%%%% ~a<nul
- echo;
- )
- pause
复制代码
[ 本帖最后由 FOR 于 2010-8-4 14:32 编辑 ]
作者: fish 时间: 2010-8-4 16:22 标题: 回复 6楼 的帖子
FOR前辈能否讲解一下这个代码?- @echo off
- for %%a in (1,2) do (
- set /p=%%%% ~a<nul
- echo;
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |