批量循环通过变量,不能cd到每个?

时间:2012-04-27 20:09:26

标签: variables loops batch-file

我在批处理文件中有一个for循环:

@echo off
set logpath1=C:\path\to\first\log
set logpath2=C:\path\to\second\log
FOR %%G IN (%logpath1% %logpath2%) DO (
  pushd %%G
  pushd ..\
  for %%D IN (%CD%) DO SET "dirname=%%~nxD"
  popd
  echo Will prefix files in %%G with %supername%
  :: do operations.
  popd
)

但是,这似乎并没有改变我的工作目录。如果我从

运行脚本
C:\tmp\path\to

然后我得到

Will prefix files in C:\path\to\first\log with tmp
Will prefix files in C:\path\to\second\log with tmp 

我的目的是压缩多个目录中的日志文件。我尝试过chdir,cd / d和& ~pd0而不是%CD%,并搜索高低。谁能告诉我为什么这不起作用?

1 个答案:

答案 0 :(得分:2)

setlocal enabledelayedexpansion

位于批处理文件的顶部,并在循环中使用!CD!而不是%CD%。根据设置%supername%的位置,您可能还需要使用!