如何设置循环变量?批处理文件

时间:2013-08-02 19:18:15

标签: for-loop batch-file setvalue

我无法在for循环中设置变量值。

@echo off
SET PID=CREE6-GGGG8-FFFF6-SSSS9-DDDD5
FOR %%x in (%PID:-= %) do (
echo %%x
SET v=(echo %%x| convert_2_scancode.py)
echo %v%
)

预期o / p CREE6 12 92 2e 23 ..........(转换后的CREE6扫描码)

3 个答案:

答案 0 :(得分:1)

一方面......你正在回显变量v的'加载时间'值。要查看FOR / IF结构内或parens中的'运行时'值,你需要添加这一行(第二行)你的节目)。

setlocal enabledelayedexpansion

然后将echo%v%更改为

echo !v!

然后是下一个问题。您试图用

做什么

SET v =(echo %% x | convert_2_scancode.py)

答案 1 :(得分:0)

由于我没有“convert_2_scancode.py”,我写了一个小“模拟器”而不是

C:\Users\Stephan\102>type t.bat
@echo off
SET PID=CREE6-GGGG8-FFFF6-SSSS9-DDDD5
set pid=%PID:-= %
for /f "tokens=* delims=" %%x in ('convert_2_scancode.bat %pid%') do set "v=%%x"
echo %v%
------------------
C:\Users\Stephan\102>type convert_2_scancode.bat
@echo converted scancode from %*
------------------
C:\Users\Stephan\102>t
converted scancode from CREE6 GGGG8 FFFF6 SSSS9 DDDD5

C:\Users\Stephan\102>

答案 2 :(得分:0)

我试试

@echo off
SET PID=CREE6-GGGG8-FFFF6-SSSS9-DDDD5
FOR %%x in (%PID:-= %) do (
echo %%x
for /f Delims=" %%v in ('echo %%x^|convert_2_scancode.py') do set v=%%v
)
echo %v%