For loop 循环的CMD不包含set/a值
我不知道怎么解释,所以这里是代码For loop 循环的CMD不包含set/a值,for-loop,cmd,set,For Loop,Cmd,Set,我不知道怎么解释,所以这里是代码 @echo off set test=0 for /f %%a in (textfile.txt) do ( rem loops five times(5 lines in textfile.txt) set /a test=test+1 rem Adds 1 to Test echo %%a rem Echo's correct line in file echo %test% rem Echo's whatever X was before the
@echo off
set test=0
for /f %%a in (textfile.txt) do (
rem loops five times(5 lines in textfile.txt)
set /a test=test+1
rem Adds 1 to Test
echo %%a
rem Echo's correct line in file
echo %test%
rem Echo's whatever X was before the loop
)
echo %test%
rem Displays the correct value of X
pause
这只是我发现问题的一个例子,txtfile.txt有5行,因此for循环运行5次,每次,test向它加1,/a显示正确的X值,但是for循环上的最后一个echo显示0,这是在循环之前test设置的值
直到循环完成,测试值才改变。。。有办法解决这个问题吗
这是我想要完成的,因为可能有一种更简单的方法:我想运行一个for循环,在一系列子文件夹中查找所有rtf,并将它们全部复制到一个新名称为1.rtf、2.rtf、3.rtf的all目录中,等等。我需要在传输中重命名它们的原因是它们都有相同的名称。您可能需要使用延迟环境变量展开。参见CMD/?有关此方面的更多帮助: /V:启用延迟环境 变量扩展使用!作为 定界符。例如,/V:ON将允许!瓦尔!扩大 执行时的变量var。var语法将扩展 变量 在输入时,这是一件完全不同的事情,当在FOR的内部时 循环 延迟环境变量展开 默认情况下未启用。你可以 启用或禁用延迟环境 一个特殊变量的变量展开式 使用/V:ON调用CMD.EXE or/V:关闭开关。您可以启用或 禁用所有的延迟扩展 在计算机上调用CMD.EXE 和/或用户登录会话(按设置) 下列任一项或两项 使用注册表中的REG_DWORD值 REGEDIT.EXE:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion
和/或
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion
到0x1
或0x0
。用户
特定设置优先于
机器的设置。命令行
开关优先于
注册表设置
If延迟环境变量
如果启用了扩展,则
感叹号字符可用于
替代环境的价值
执行时的变量
这是对的
示例代码:
@echo off
setlocal enabledelayedexpansion
echo.
set numLines=0
echo examining file '%~f0'
echo.
rem loop N times, once for each line in the file
for /f %%a in (%~f0) do (
rem add 1 to the numLines variable
set /a numLines=!numLines!+1
rem echo the first symbol from the line
echo line !numLines!: %%a
)
rem Display the number of lines in the file
echo.
echo The file '%~f0' has %numLines% lines.
echo.
pause
echo.
endlocal
只是想补充一点,利用延迟扩展的关键是使用!瓦尔!语法对%var%。据我所知,XP默认启用延迟扩展,您只需使用!引用var即可!。这解决了我的问题。在其他海报提到的帮助中发现: 使用启用延迟环境变量扩展!作为 定界符例如,/V:ON将允许!瓦尔!扩大 执行时变量var。var语法扩展变量 在输入时,这是一件完全不同的事情,当在FOR的内部时 循环
我忽略了这个问题!!一开始是位。将
%%a
值传输到任何for循环变量如何?只是几个小时都做不到