Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Input 从文本文件导入变量,变量不递增_Input_Batch File_Cmd - Fatal编程技术网

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