Có cái gì đó giống như Lệnh thay thế trong Windows CLI không?


13

Trong Linux (Bash), có một cách để sử dụng một lệnh làm tham số cho một lệnh khác, sử dụng back-tick:

> echo ===== `time` =====

Điều này sẽ in:

===== Thời gian hiện tại là: 12: 22: 34,68 =====

Có cách nào để làm điều này trong cmd.exe trên WIndows không?




Cũng xem bài đăng này ( sử dụng lệnh doskey từ cmd )
misterjaytee

@misterjaytee: Thay thế lệnh và bí danh là những thứ khác nhau.
dùng1686

@grawity - Cảm ơn bạn đã chỉ ra điều đó - Lưu ý đến bản thân: phải đọc đúng câu hỏi trước khi trả lời ...
misterjaytee

Câu trả lời:


9

Thử đi:

echo. ===== %time% =====

Tôi biết điều này có thể không phải là những gì bạn muốn, bởi vì bạn đã đề cập thay thế lệnh ... Vì vậy, đây có thể là nó:

for /f "usebackq tokens=*" %i in (`date/t&time/t`) do echo.  ===== %i =====

Để biết thêm gợi ý về việc sử dụng usebackqthử lệnh này:

for /?

4
Đúng, for /flà những gì tôi đang tìm kiếm. Cảm ơn! Một lưu ý phụ: Thật khó hiểu và khó nhớ (so với cách bash). Tôi nên từ bỏ "lập trình dơi" và học một cái gì đó hiệu quả hơn - PowerShell có thể?
Cristi Diaconescu

3

Trong Windows, toán tử '()' có hành vi tương tự như thay thế lệnh Bash.

Kịch bản Linux này:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

echo $my_linux_command=$(ls)
echo $my_alternate_linux_command=`ls`

cho kết quả tương tự như Windows PowerShell:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

và như Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%

9
Ví dụ Windows CMD là sai. Parens trong cmd shell chỉ thực hiện một lệnh trong một subshell. Var env được đặt thành "(dir)" và nó được thực thi trên dòng thứ hai (khi var env được bao quanh bởi%) - không thực sự là sự thay thế bạn muốn.
davidbak

1
Điều này không chính xác đối với hành vi cmd.exe của windows
JJS

Đây là powershell, trong khi câu hỏi là về cmd.exe
Raúl Salinas-Monteagudo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.