我想为所有的项目运行git拉出一个路径,所以我写了一个bat文件。
@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
发布于 2014-01-17 06:44:09
它有效果。但是,在批处理文件中,当到达一个代码块(括在括号内的代码)(块外的一行相同)时,变量读取在执行代码块中的代码之前被替换为变量的值。因此,当到达for命令时,%cd%变量的读取在执行代码之前被替换为%cd%变量的值。这加快并简化了代码的执行,但会产生此类问题。
您可以使用setlocal enabledelayedexpansion命令启用延迟扩展,并将sintax从%cd%更改为!cd!。这告诉cmd,这个变量read应该延迟到行的执行。
https://stackoverflow.com/questions/21178772
复制相似问题