2012-08-13 24 views
7

Có bất kỳ cú pháp tương đương Windows nào để chạy lệnh trong lệnh khác trong tệp tập lệnh bat không?Windows bat thay thế cho lệnh Bash nội tuyến

Trong Linux, bạn có thể chỉ cần sử dụng $(...) hoặc ``.

+0

Tệp .bat của Windows là một lý do lịch sử, tại sao không cài đặt Perl thay thế? – cdarke

+0

Các tệp hàng loạt vẫn có một vị trí - ví dụ: nếu bạn phải chạy một tệp như một phần của tập lệnh cài đặt. Bạn không thể giả định Perl sẽ được cài đặt trên hệ thống của người dùng. –

Trả lời

7

Vâng, ít nhất là cho những điều đơn giản:

@setlocal enableextensions enabledelayedexpansion 
@echo off 
for /f %%w in ('echo xyzzy') do set var=%%w 
echo Output is %var% 
endlocal 

Kết quả của kịch bản đó là:

Output is xyzzy 

với xyzzy đến từ các lệnh echo.

Chạy for /? từ cửa sổ lệnh sẽ cung cấp cho bạn danh sách tùy chọn toàn diện hơn.

+0

Tôi nghĩ rằng điều này được xử lý bởi 'for-in' xây dựng không nội bộ của Windows commandline engine. Dường như nó không hoạt động trong trường hợp của tôi: http://stackoverflow.com/questions/11828801/imagmagick-how-to-add-a-gradient-splice-to-an-image-using-one-convert-command/11864792 # 11864792 – Mohsen

+0

@Moshen, 'for' là cách duy nhất tôi nghĩ bạn có thể làm điều này. Ngay cả 'bash' không chạy mã với' $() ', nó đơn giản thay thế đầu ra tiêu chuẩn từ một tiến trình khác. Đó là không có gì khác nhau để lưu trữ nó trong một biến môi trường và sau đó sử dụng biến đó, như trong câu trả lời của tôi. – paxdiablo

+0

@Mohsen - FOR là một lệnh nội bộ, vì vậy nó chắc chắn nhất đang được xử lý bởi các công cụ dòng lệnh. – dbenham

Các vấn đề liên quan