gpt4 book ai didi

windows - 在批处理脚本中将文件路径连接到环境变量

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

我制作了一个 bat 脚本,它应该将文件夹列表复制到一个变量,但我没有在变量中得到任何东西。换句话说,当我在 for 循环之后回显变量时,我得到了预期的输出,但是在执行脚本后的外部 shell 中,我没有看到我的变量中有任何设置。如何让所有变量正确复制?

我正在使用 Windows 7。

批处理文件(script.bat):

@echo off
setlocal enabledelayedexpansion enableextensions

for /r /D %%x in (*) do (
SET PATH_VALUE=%%x;!PATH_VALUE!
)
echo %PATH_VALUE%

windows cmd 实用程序的输出

C:\test> script.bat
C:\test\1;C:\test\2

C:\test> echo %PATH_VALUE%
%PATH_VALUE%

如何获取 %PATH_VALUE% 作为环境变量?我发现了一个类似的问题here但它并不能完全回答我的问题。

最佳答案

那是因为您使用 SETLOCAL 命令启用延迟扩展。是的,它提供了您需要的延迟扩展,但它也使环境变化本地化。一旦您的批处理脚本结束,就会有一个隐含的 ENDLOCAL,并且旧环境将被恢复。

您可以通过在脚本末尾添加以下内容来跨越 ENDLOCAL 屏障传递值:

endlocal&set "PATH_VALUE=%PATH_VALUE%"

或者你可以这样写:

(
endlocal
set "PATH_VALUE=%PATH_VALUE%"
)

上述两者都有效,因为代码块在 ENDLOCAL 执行之前被扩展和解析,但是具有扩展值的 SET 语句在 ENDLOCAL 之后执行。

关于windows - 在批处理脚本中将文件路径连接到环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623387/

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