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

时间:2013-01-17 18:24:50

标签: 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

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

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

我哪里错了?

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

1 个答案:

答案 0 :(得分:6)

setlocal EnableDelayedExpansion放在开头,然后使用!var!代替%var%。然后每次评估它。