如何在批处理中更改循环内的变量值

kos*_*bou 2 variables loops batch-file

我使用下面的代码,以便从收集器文本文件的前4个字符的值创建一个目录

@echo off & setlocal enabledelayedexpansion

:loop

set /P txt_file=<Collector.txt
Set collector_id=!txt_file:~0,4!

:: check for existence of [OutputFolder]
:: if [OutputFolder] doesn't exist, create it
if not exist %collector_id% (
  echo folder %collector_id% not found
  echo creating folder %collector_id%
  md %collector_id% 
  )

xcopy *.txt %collector_id% /v 
Del *.txt

goto loop
Run Code Online (Sandbox Code Playgroud)

我想连续执行上面的循环,以检查当前目录是否为空.如果不是我想制作一个目录,如果不存在,名称为collector.txt的前4个字符.

如果目录不为空,一切正常.当上面循环并且我将collector.txt添加到当前目录时,collector_id不会改变.

我哪里错了?

有没有其他方式,期望无限循环来做到这一点?

bar*_*uin 6

放在setlocal EnableDelayedExpansion一开始,而!var!不是使用%var%.然后每次评估它.

  • 你已经有了`EnableDelayedExpansion`,我刚刚注意到,但我希望这样的答案对其他读者来说更完整。 (2认同)