มีบางอย่างเช่นการทดแทนคำสั่งใน Windows CLI หรือไม่


14

ใน Linux (Bash) มีวิธีใช้คำสั่งเป็นพารามิเตอร์สำหรับคำสั่งอื่นโดยใช้ back-ticks:

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

สิ่งนี้จะพิมพ์:

===== เวลาปัจจุบันคือ: 12: 22: 34.68 =====

มีวิธีการทำเช่นนี้ใน cmd.exe บน WIndows หรือไม่?




ดูโพสต์นี้ (การใช้คำสั่ง doskey จาก cmd )
misterjaytee

@misterjaytee: การทดแทนคำสั่งและชื่อแทนเป็นสิ่งที่แตกต่างกัน
user1686

@grawity - ขอบคุณที่ชี้ให้เห็นว่า - หมายเหตุถึงตัวเอง: ต้องอ่านคำถามให้ถูกต้องก่อนที่จะตอบ ...
misterjaytee

คำตอบ:


9

ลองสิ่งนี้:

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

ฉันรู้ว่านี่อาจไม่ใช่สิ่งที่คุณต้องการเพราะคุณพูดถึงการทดแทนคำสั่ง ... ดังนั้นนี่อาจเป็น:

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

สำหรับคำแนะนำเพิ่มเติมเกี่ยวกับการใช้งานusebackqลองคำสั่งนี้:

for /?

4
ใช่ for /fเป็นสิ่งที่ฉันกำลังมองหา ขอบคุณ! ในหมายเหตุด้าน: มันน่ารำคาญและยากที่จะจำได้ (เทียบกับวิธีทุบตี) ฉันควรยอมแพ้ "การเขียนโปรแกรมค้างคาว" และเรียนรู้สิ่งที่มีประสิทธิผลมากขึ้น - PowerShell อาจจะ?
Cristian Diaconescu

3

ใน Windows ตัวดำเนินการ '()' จะมีพฤติกรรมคล้ายกันกับการทดแทนคำสั่ง Bash

สคริปต์ Linux นี้:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

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

ให้ผลลัพธ์ที่คล้ายกันเป็น Windows PowerShell:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

และเป็น Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%

9
ตัวอย่าง Windows CMD ไม่ถูกต้อง Parens in cmd shell เพียงแค่รันคำสั่งใน subshell env var ถูกตั้งค่าเป็น "(dir)" และถูกเรียกใช้งานในบรรทัดที่สอง (เมื่อ env var ล้อมรอบด้วย%) - ไม่ใช่การทดแทนที่คุณต้องการจริงๆ
davidbak

1
สิ่งนี้ไม่ถูกต้องสำหรับพฤติกรรม windows cmd.exe
JJS

นี่คือ PowerShell ในขณะที่คำถามเป็นเรื่องเกี่ยวกับ cmd.exe
Raúl Salinas-Monteagudo

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.