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

[其他] 批处理怎么在for循环中输出%%~变量名

代码如下:
  1. @echo off
  2. for %%a in (1,2) do echo %%%%~a
  3. pause
复制代码
理想输出:
%%~a
%%~a
实际输出:
%1
%2

这个?
  1. @echo off
  2. for /l %%i in (1,1,2) do echo %%%%~a
  3. pause
复制代码

设定循环次数一般是用for /l来控制。这里你的意思%%~a是一个字符串,只单纯的输出吗?

[ 本帖最后由 sgaizxt001 于 2010-8-4 05:55 编辑 ]
努力学习,努力挣分

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set x=~
  3. for %%a in (1,2) do echo %%%%!x!a
  4. pause
复制代码

要达到楼主目的,不要让%%和"变量名"或"~变量名"挨一起了,这样就不会被识别成变量。
!x!优先级比%%a型变量低,cmd首先寻找%%a型变量,发现是%%!x!a,不予替换值,然后替换!x!得到~。

[ 本帖最后由 wankoilz 于 2010-8-4 08:33 编辑 ]

TOP

这个只要不和前面的%%a重复就可以了,何必那么麻烦
for %%b in (c,d) do echo %%%%~a

TOP

原帖由 FOR 于 2010-8-4 11:16 发表
这个只要不和前面的%%a重复就可以了,何必那么麻烦
for %%b in (c,d) do echo %%%%~a

楼主说是显示“%%~变量名”,楼上的%%~a在for里面不是变量名。
我开始也犯了和楼上相同的错误。

TOP

回复 5楼 的帖子

如果真是这样的话,感觉是没事找事
  1. @echo off
  2. for %%a in (1,2) do (
  3.    set /p=%%%%<nul
  4.    echo ~a
  5. )
  6. pause
复制代码
  1. @echo off
  2. for %%a in (1,2) do (
  3.    set /p=%%%% ~a<nul
  4.    echo;
  5. )
  6. pause
复制代码

[ 本帖最后由 FOR 于 2010-8-4 14:32 编辑 ]

TOP

回复 6楼 的帖子

FOR前辈能否讲解一下这个代码?
  1. @echo off
  2. for %%a in (1,2) do (
  3.    set /p=%%%% ~a<nul
  4.    echo;
  5. )
  6. pause
复制代码

TOP

返回列表