2012-08-13 80 views
7

是否有任何Windows等效語法在bat腳本文件中的另一個命令內運行命令?Windows bat替代Bash內聯命令

在Linux中,您可以簡單地使用$(...)或``。

+0

Windows .bat文件是一個歷史倒退,爲什麼不安裝Perl呢? – cdarke 2012-08-13 08:28:06

+0

批處理文件仍然有一個地方 - 例如,如果您必須運行一個作爲安裝腳本的一部分。你不能假定Perl將被安裝在用戶的系統上。 – 2012-08-13 09:28:09

回答

7

是的,至少對於簡單的事情:

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

該腳本的輸出是:

Output is xyzzy 

xyzzyecho命令來了。

從命令窗口運行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 2012-08-13 07:12:04

+0

@Moshen,'for'是我認爲你能做到的唯一方法。即使'bash'沒有使用'$()'運行代碼,它只是替換另一個進程的標準輸出。這與把它存儲在一個環境變量中然後使用這個變量沒有什麼不同,就像我的答案一樣。 – paxdiablo 2012-08-13 07:17:37

+0

@Mohsen - FOR是一個內部命令,所以它肯定是由命令行引擎處理的。 – dbenham 2012-08-13 19:18:03