我在批处理文件中有一个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%,并搜索高低。谁能告诉我为什么这不起作用?
答案 0 :(得分:2)
把
setlocal enabledelayedexpansion
位于批处理文件的顶部,并在循环中使用!CD!
而不是%CD%
。根据设置%supername%
的位置,您可能还需要使用!
。