2010-07-07 26 views
8

tôi cần phải làm tương đương vớiCó thể thiết lập một biến môi trường để đầu ra của một lệnh trong cmd.exe

set ENVAR=`some-command` 

Trong một cửa sổ/cmd.exe kịch bản. Cygwin không phải là một lựa chọn.

Đối với điểm thưởng: Có một số tương đương cmd.exe của dấu backticks nói chung không?

+2

Cài đặt Powershell. –

+0

Tôi có một chương trình của bên thứ ba gọi cmd.exe bằng tập lệnh và kiểm tra biến môi trường CAUSE sau khi tập lệnh kết thúc. Tôi không thể sử dụng trực tiếp một trình bao khác. –

Trả lời

7

Cách nhanh chóng và bẩn sẽ chuyển hướng tệp đó đến tệp và sau đó đọc tệp này, ví dụ:

some-command>out.txt 
set /p ENVAR=<out.txt 

Tôi nghĩ for cũng có thể giúp bạn, nhưng tôi không nhớ cú pháp chính xác. Hãy thử một cái gì đó giống như

for /f "usebackq" %x in (`some-command`) do set ENVAR=%x 

tôi có thể quên một số token hoặc delim trong các tùy chọn ...

1

Không "có lẽ", nó là hoàn toàn bắt buộc để xác định "delims =" như thẻ cuối cùng (có nghĩa là, không có delimiters), trừ khi bạn muốn biến của bạn chỉ chứa tối đa không gian đầu tiên của dữ liệu đầu vào.

I.e.

FOR /F "usebackq delims=" %%a IN (`cygpath.exe -u "%~1"`) DO (
    SET CMDNAME=%%~a 
    SHIFT 
) 
Các vấn đề liên quan