2012-01-07 8 views
8

Trên windows/cygwin, tôi muốn có thể lưu biến PATH để tập tin trên một máy và tải nó lên máy khác;cách đặt biến môi trường từ nội dung tệp?

để lưu trữ biến tôi đang làm:

echo %PATH% > dat 

Tuy nhiên, không chắc chắn làm thế nào để tải nó sau này.

set PATH=??????? 

Cảm ơn Rami

+6

Chỉ cần sử dụng: 'thiết lập/P PATH = Aacini

+2

đăng nhận xét của bạn làm câu trả lời và tôi sẽ bỏ phiếu. –

Trả lời

3

Là phụ thuộc vào Cygwin, làm thế nào như thế nào về việc đặt lệnh trong tập tin đã lưu của bạn, ví dụ:

echo "export PATH=$PATH" > dat 

Sau đó, nguồn kịch bản sau để thiết lập đường dẫn:

. ./dat 

Lưu ý rằng "tìm nguồn cung ứng" tập lệnh (so với chỉ thực thi) là cần thiết để nó sửa đổi môi trường hiện tại của bạn - và không chỉ là môi trường con mới.

+0

trên windows i cuối cùng đã làm 'echo set PATH =% PATH%> dat.bat'; cảm ơn – sramij

5

echo %PATH% sẽ thất bại nếu PATH chứa một thể viện chứng & hay^(đây là không có khả năng, nhưng chắc chắn có thể)

Một giải pháp đáng tin cậy hơn là sử dụng:

setlocal enableDelayedExpansion 
echo !path!>dat 

Sau đó, bạn có thể sử dụng Aacini của phương pháp đề nghị đọc giá trị trở lại trong

set /p "PATH=" <dat 
11

Chỉ cần sử dụng: set /P PATH=< dat

Bạn phải lưu ý rằng echo %PATH% > dat chèn thêm một dấu cách sau giá trị% PATH%; không gian đó có thể gây ra vấn đề nếu một đường dẫn bổ sung sau đó được thêm vào biến PATH. Chỉ cần loại bỏ không gian thêm theo cách này: echo %PATH%> dat.

+1

Đối với tôi, tính năng này chỉ hoạt động với 1024 ký tự đầu tiên của tệp. Xin lỗi, tôi đã bỏ lỡ sự kiện này trên Cygwin. Có lẽ nó hoạt động tốt hơn dưới Cygwin. –

+0

@RussellGallop, bạn có tìm thấy giải pháp cho giới hạn này không? – xverges

+0

'set/P' chỉ có thể đọc 1024 ký tự. Để đọc thêm, sử dụng 'for/F' như trong câu trả lời SpaceMonkey bên dưới. – Aacini

1

Đây có thể là ác nhưng trên Windows Tôi đang sử dụng này:

for /F %%g in (dat) do set PATH=%%g 

và điều này để ghi các file vì tôi đã gặp rắc rối với các không gian

echo>dat %PATH%