2012-08-13 20 views
7

Bir komut dosyası komut dosyasında başka bir komutta bir komutu çalıştırmak için herhangi bir Windows eşdeğer sözdizimi var mı?Bash satır içi komutu için Windows yarasa alternatifi

Linux'ta $(...) veya `` işlevlerini kullanabilirsiniz. echo komuta gelen xyzzy ile

Output is xyzzy 

:

+0

Windows .bat dosyaları tarihsel bir geri dönüşüme neden, Perl yerine neden yüklemiyorsunuz? – cdarke

+0

Toplu iş dosyalarında hala bir yer var - örneğin bir yükleme komut dosyasının parçası olarak çalıştırmanız gerekiyorsa. Perl'in kullanıcının sistemine yükleneceğini varsayamazsınız. –

cevap

7

Evet, en azından için basit şeyler:

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

o komut dosyası çıktısıdır.

Bir komut penceresinden çalışan for /?, daha kapsamlı bir seçenekler listesi sunar.

+0

Bu, Windows komut satırı motoru tarafından dahili olarak değil "for-in" yapı tarafından ele alındığını düşünüyorum. Benim durumumda çalışmıyor gibi görünüyor: http://stackoverflow.com/questions/11828801/imagmagick-how-to-add-a-gradient-splice-to-an-image-using-one-convert-command/11864792 # 11864792 – Mohsen

+0

@Moshen, "Bunu yapabileceğinizi düşündüğüm tek yol". 'Bash' bile kodu $() ile çalıştırmıyor, sadece standart çıktıyı başka bir süreçten alıyor. Bu, onu bir ortam değişkenine depolamaktan ve sonra bu değişkeni, cevabımda olduğu gibi kullanmaktan farklı değildir. – paxdiablo

+0

@Mohsen - FOR bir iç komutdur, bu nedenle kesinlikle komut satırı motoru tarafından ele alınmaktadır. – dbenham