在批处理文件的for
循环中使用表时遇到问题。
这是我的代码:
@echo off
SET /P input1=Nombre de camion :
set nombreDeCamion=%input1%
for /l %%f in (1,1,%nombreDeCamion%) DO (
set index=%%f
SET /P input=Entrer le no du camion:
setlocal EnableDelayedExpansion
set tableauNoCamion[%index%]=!input!
echo You entered !tableauNoCamion[%index%]!
endlocal
)
for %%n in (%tableauNoCamion%) DO (
setlocal enableDelayedExpansion
echo %%n
endlocal
)
pause
在第二个循环中,我想看看我的表是否填充良好。
我喜欢用用户输入的数据填充名为tableauDeCamion
的表。之后,我想使用这个表来最终重命名一些文件。我已经尝试过/r %%f in (*.jpg) DO
传递所有JPG文件,效果很好。如何在该循环中使用表tableauDeCamion
。
有一个主要问题
set tableauNoCamion[%index%]=!input!
echo You entered !tableauNoCamion[%index%]!
因为%index%
将在for ...%%f
被解析时用index
的内容进行评估
根本不用为index
而烦恼;使用
set tableauNoCamion[%%f]=!input!
echo You entered !tableauNoCamion[%%f]!
至于第二个循环,你可以使用
set tableauNoCamion
或
for /f "tokens=1*delims==" %%a in ('set tableauNoCamion') do echo %%a
或
setlocal enabledelayedexpansion
for /L %%a in (1,1,%nombreDeCamion%) do echo !tableauNoCamion[%%a]!
endlocal
(所有航空代码-未经测试)
还有其他的——这取决于你想要什么样的报告。
至于你想对*.jpg
或非*.jpg
文件做什么,这对我来说是个谜…
啊,是的——问题是,当达到匹配的endlocal
时,在setlocal
之后对环境所做的任何更改都会被撤消。
Hee是个修正案。。。
@echo off
setlocal EnableDelayedExpansion
SET /P input1=Nombre de camion :
set nombreDeCamion=%input1%
for /l %%f in (1,1,%nombreDeCamion%) DO (
set index=%%f
SET /P input=Entrer le no du camion:
set tableauNoCamion[%%f]=!input!
echo You entered !tableauNoCamion[%%f]!
)
echo===============
SET tableaunocamion
echo===============
for /L %%a in (1,1,%nombreDeCamion%) do echo !tableauNoCamion[%%a]!
echo===============
for /f "tokens=2,3delims=[]=" %%a in ('SET tableaunocamion') do echo %%a. %%b
GOTO :EOF
注意:我为在cmd
会话中运行编写代码。如果您从"快捷方式"运行,则需要战略性地插入pause
。
以下是示例结果:(输入4,11,22,33,44)
Nombre de camion : Entrer le no du camion: You entered 11
Entrer le no du camion: You entered 22
Entrer le no du camion: You entered 33
Entrer le no du camion: You entered 44
==============
tableauNoCamion[1]=11
tableauNoCamion[2]=22
tableauNoCamion[3]=33
tableauNoCamion[4]=44
==============
11
22
33
44
==============
1. 11
2. 22
3. 33
4. 44