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 ``.
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 ``.
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.
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
@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
@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
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
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. –