簡體   English   中英

將文件路徑連接到批處理腳本中的環境變量

[英]Concatenate file paths to an environment variable in batch script

我已經制作了一個bat腳本,該腳本應該將文件夾列表復制到變量中,但是變量中什么也沒有。 換句話說,當我在for循環之后回顯變量時,我得到了預期的輸出,但是在執行腳本之后在外殼程序外部,我看不到變量中有任何設置。 如何獲取所有變量以正確復制?

我正在使用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%作為環境變量? 我在這里找到了類似的問題但並不能完全解決我的問題。

這是因為使用了SETLOCAL命令來啟用延遲擴展。 是的,它可以提供您所需的延遲擴展,但是還可以本地化環境更改。 批處理腳本結束后,將隱式包含ENDLOCAL ,並且將還原舊環境。

您可以通過在腳本末尾添加以下內容來跨ENDLOCAL障礙傳遞值:

endlocal&set "PATH_VALUE=%PATH_VALUE%"

或者你可以這樣寫:

(
  endlocal
  set "PATH_VALUE=%PATH_VALUE%"
)

上面的兩個工作都是因為在執行ENDLOCAL之前對代碼塊進行了擴展和解析,但是具有擴展值的SET語句在ENDLOCAL之后執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM