Input 从文本文件导入变量,变量不递增
我的目标是能够进入一个特定的文件夹,运行一个任务,然后当任务完成后,移动到另一个文件夹并重复Input 从文本文件导入变量,变量不递增,input,batch-file,cmd,Input,Batch File,Cmd,我的目标是能够进入一个特定的文件夹,运行一个任务,然后当任务完成后,移动到另一个文件夹并重复 @echo off setlocal ENABLEDELAYEDEXPANSION set vidx=0 for /F "tokens=*" %%A in (z:\desktop\cookieclean\test.txt) do ( SET /A vidx=!vidx! + 1 set var!vidx!=%%A ) set var echo %var!vidx!% set /a v
@echo off
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
for /F "tokens=*" %%A in (z:\desktop\cookieclean\test.txt) do (
SET /A vidx=!vidx! + 1
set var!vidx!=%%A
)
set var
echo %var!vidx!%
set /a vidx+=1
echo %var!vidx!%
endlocal
这就是我正在研究的代码。我从网上的其他地方复制了代码,并试图让它做我想做的事情。上面的代码只是我试图获取测试文件,将3行文本作为变量,然后让它递增
我确信这是一件非常简单的事情,但我已经试着让它工作了好几个小时,我的菜鸟气质正在显现
我要做的一个伪代码是
Input variables from text
Open folder containing files
Delete files that are older than X days
Move active folder to next folder in directory
Delete files that are older than X days
Loop
End
我只是想使用cmd行。您的延迟和正常扩展被颠倒了。您希望内部变量在外部变量之前展开:
!变量%vidx%代码>
循环中的SET/A语句可以工作,但不需要展开变量。这同样有效:SET/A vidx=vidx+1
,或者更好:SET/A vidx+=1
我也相信你显示结果的逻辑是错误的。下面的代码应该可以工作
@echo off
setlocal enableDelayedExpansion
set "vidx=0"
for /f "tokens=*" %%A in (z:\desktop\cookieclean\test.txt) do (
set /a vidx+=1
set "var!vidx!=%%A"
)
set var
set "cnt=vidx"
set "vidx=1"
:loop
if %vidx% leq %cnt% (
echo !var%vidx%!
set /a vidx+=1
goto :loop
)
endlocal
这里有一个更简单、更有效的方法,使用FOR/L代替GOTO循环
@echo off
setlocal enableDelayedExpansion
set "vidx=0"
for /f "tokens=*" %%A in (z:\desktop\cookieclean\test.txt) do (
set /a vidx+=1
set "var!vidx!=%%A"
)
set var
for /l %%N in (1 1 %vidx%) do echo !var%%N!
endlocal