【发布时间】:2011-08-09 20:22:13
【问题描述】:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set seed=-1
echo seed init val:%seed%
for %%f in (*.txt) DO (
checksum %%f %seed%
echo error level: !ERRORLEVEL!
set seed = !ERRORLEVEL!
echo new seed val:!seed!
)
输出:
C:\>returnval
seed init val:-1
Seed in main : FFFFFFFF
The 32-bit checksum for result.txt is 44DD58EE
error level: 1155356910
new seed val:-1 //still -1 ?? should be 1155356910
Seed in main : FFFFFFFF
The 32-bit checksum for test.txt is E245740F
error level: -498764785
new seed val:-1
设置种子 = ERRORLEVEL 的行不起作用。
要回显错误级别,我确实需要使用“!”否则它将无法正常展开和显示。
当我们得到新的种子值时,你可以看到:它仍然是 -1
如何将seed 设置为最后一个ERRORVALUE?
(旁注,for 循环只是查找我拥有的两个文本文件并将其提供给返回文件校验和的 exe。这似乎工作正常,因为 ERRORLEVEL 是 exe 的结果。 )
答案:需要在set上使用/a来获取种子取ERRORLEVEl的数值,然后使用“!”校验和参数种子也是如此。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set seed=-1
echo seed init val:%seed%
for %%f in (*.txt) DO (
checksum %%f !seed!
echo error level: !ERRORLEVEL!
set /a seed = !ERRORLEVEL!
echo new seed val:!seed!
)
【问题讨论】:
标签: windows variables command-line batch-file