[英]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%
這是因為使用了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.