gpt4 book ai didi

windows - 在 pushd 中 pushd —— 可能吗?

转载 作者:可可西里 更新时间:2023-11-01 11:49:09 25 4
gpt4 key购买 nike

我正在尝试创建一个非常简单的批处理脚本,其中对于复制到暂存目录的每个文件,脚本都会将其工作目录更改为该暂存目录以执行一些工作:

pushd C:\Shared\
for /r %%f in (*.dll) do (
copy %%f C:\staging\.
pushd C:\staging\.
echo CWD is %cd%
REM do some work here
popd
)
popd

然而,令我惊讶的是,只有第一个 pushd 完成了。

这是 DOS/Windows 批处理的已知限制吗?如果是这样,是否有快速解决方法?

最佳答案

它有效。用命令 cd 证明:

pushd C:\Shared\
for /r %%f in (*.dll) do (
pushd C:\staging\.
echo CWD is %cd%
cd
popd
)
popd

但是因为您使用了一个变量 (%cd%),它在同一个 block 中被更改和使用,您需要 delayed Expansion :

setlocal enabledelayedexpansion
pushd C:\Shared\
for /r %%f in (*.dll) do (
pushd C:\staging\.
echo CWD is %cd%
echo correct CWD is !cd!
cd
popd
)
popd

关于windows - 在 pushd 中 pushd —— 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34740809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com