首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在windows .bat文件中使用cd没有任何影响

在windows .bat文件中使用cd没有任何影响
EN

Stack Overflow用户
提问于 2014-01-17 05:48:24
回答 1查看 237关注 0票数 1

我想为所有的项目运行git拉出一个路径,所以我写了一个bat文件。

代码语言:javascript
复制
@echo off
setlocal enabledelayedexpansion
set dir=%1
if "%dir%"=="" (
    set dir=%~dp0
)
for /D /R "%dir%" %%i in (*) do (
    if exist %%i\.git (
        cd /d %%i
        rem no effect
        echo %cd%
        rem git pull
    )
)
pause

但是似乎cd在循环中没有起任何作用,我不知道为什么。有人能帮我解决这个问题吗?enter code here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-17 06:44:09

它有效果。但是,在批处理文件中,当到达一个代码块(括在括号内的代码)(块外的一行相同)时,变量读取在执行代码块中的代码之前被替换为变量的值。因此,当到达for命令时,%cd%变量的读取在执行代码之前被替换为%cd%变量的值。这加快并简化了代码的执行,但会产生此类问题。

您可以使用setlocal enabledelayedexpansion命令启用延迟扩展,并将sintax从%cd%更改为!cd!。这告诉cmd,这个变量read应该延迟到行的执行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21178772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档