[請問] bat批次檔的變數問題

看板ask作者 (紅狐)時間3年前 (2022/05/31 01:30), 3年前編輯推噓2(206)
留言8則, 4人參與, 3年前最新討論串1/1
TESTA.bat 內容: @echo off setlocal EnableDelayedExpansion If not defined myValue SET myValue=A :st echo !myValue! SET myValue=AA Call TESTB.bat echo !myValue! pause goto st TESTB.bat 內容: @echo off setlocal EnableDelayedExpansion If not defined myValue SET myValue=B echo !myValue! SET myValue=BB echo !myValue! 輸出結果: A AA BB AA 想請問為什麼輸出第四行,會是AA而非BB? 跳到TESTB.bat運行時,已經將myValue設為BB了 怎麼回到TESTA.bat,myValue仍然是AA 要如何修改才能符合我預期的結果? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 116.89.131.25 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/ask/M.1653931844.A.3C6.html

05/31 06:26, 3年前 , 1F
設幾個中斷點看一下程式怎麼跑就知道了
05/31 06:26, 1F

05/31 09:37, 3年前 , 2F
我知道這個批次檔怎麼跑的
05/31 09:37, 2F

05/31 09:37, 3年前 , 3F
問題在於,我呼叫另個批次檔,讀取某變數,並對其修改
05/31 09:37, 3F

05/31 09:37, 3年前 , 4F
回到原程序,該變數又變回原樣
05/31 09:37, 4F

05/31 09:37, 3年前 , 5F
好像變數只修改表面?我自己google搜尋過,但沒找到說明
05/31 09:37, 5F

05/31 11:29, 3年前 , 6F
你的變數只是區域的 不是全域變數
05/31 11:29, 6F

05/31 11:31, 3年前 , 7F
B繼承A 但A沒有繼承B
05/31 11:31, 7F
成功了 把B的 setlocal EnableDelayedExpansion 這行拿掉就行了 謝謝指出原因! 不過我本來的程序 是在if的其中一條件中,可能還要輸入值,再把值丟入myValue 所以才會用到那行指令 那我再想想怎樣解決好了 ※ 編輯: RedFox (116.89.131.25 臺灣), 05/31/2022 13:12:06

05/31 13:23, 3年前 , 8F
改用PS啦
05/31 13:23, 8F
文章代碼(AID): #1YbFz4F6 (ask)