Tôi đang viết tệp lô để đọc đường dẫn từ tệp và đặt biến môi trường. Tập tin batch này sẽ được nhiều tập tin batch khác sử dụng để gọi biến. Trong khi viết các tập tin batch tôi phải đối mặt với một vấn đề sẽ mở rộng biến vì vậy tôi sử dụng SETLOCAL ENABLEDELAYEDEXPANSION
để khắc phục vấn đề này. Nhưng làm như vậy các tập tin batch khác đang sử dụng nó không thể có được các biến được thiết lập.Kịch bản lệnh hàng loạt tạo biến tập hợp được truy cập bởi các tệp lô khác
Dưới đây là kịch bản hàng loạt,
getVariables.bat
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
if EXIST "test.dat" (
for /F "tokens=*" %%I in (test.dat) do set %%I
echo setting JAVA_HOME to :: !JAVA_HOME!
echo setting JAVA to !JAVA!
)
Trong một tập tin thực thi của tôi, tôi đang sử dụng tập tin batach trên để có được các biến được đặt
another.bat
call getVariables.dat
echo "%JAVA%"
Nhưng tiếng vang được in "", nơi mà nó chưa được đặt. Nếu điều này là do setlocal
, làm thế nào tôi có thể khắc phục điều này? Tôi cũng cần setlocal
để trì hoãn việc mở rộng và diễn ra vào thời gian thực hiện. Bất kỳ giải pháp cho vấn đề này? Hãy giúp tôi ra.
Đó là vấn đề với tôi. Tôi đang ở trong thói quen sử dụng SETLOCAL trong tất cả các kịch bản của tôi. Cuối cùng, tôi đã tìm thấy một ngoại lệ mà nó gây ra một vấn đề. – djangofan