2012-08-13 17 views
7

batスクリプトファイル内の別のコマンドでコマンドを実行するWindows同等の構文はありますか?BashインラインコマンドのWindowsバットの代替方法

Linuxでは、単に$(...)または ``を使用できます。

+0

Windowsの.batファイルは歴史的な後退です。代わりにPerlをインストールしてみませんか? – cdarke

+0

バッチファイルにはまだ場所があります。たとえば、インストールスクリプトの一部として実行する必要がある場合などです。 Perlがユーザのシステムにインストールされるとは想定できません。 –

答えて

7

はい、少なくとも簡単なもののために:

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

そのスクリプトの出力は次のとおりです。echoコマンドから来るxyzzy

Output is xyzzy 

コマンドウィンドウからfor /?を実行すると、より包括的なオプションリストが表示されます。

+0

これは、Windowsのコマンドラインエンジンで内部的に使用されていないfor-inコンストラクトによって処理されると思います。私の場合は動作しないようです: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'は私があなたがこれを行うことができると思う唯一の方法です。 'bash'でも' $() 'でコードを実行していないので、単純に別のプロセスの標準出力を置き換えています。それは私の答えのように環境変数に格納し、その変数を使うことと変わりません。 – paxdiablo

+0

@Mohsen - FORは内部コマンドなので、コマンドラインエンジンが最も確実に処理しています。 – dbenham