2012-08-13 13 views
7

Czy istnieje odpowiednia składnia systemu Windows do uruchamiania polecenia w innym poleceniu w pliku skryptu nietoperza?Alternatywa dla batów Windows dla komendy Bash inline

W systemie Linux możesz po prostu użyć $(...) lub ``.

+0

Pliki Windows .bat są historycznym powrotem, dlaczego nie zainstalować Perla? – cdarke

+0

Pliki wsadowe nadal mają miejsce - na przykład, jeśli trzeba je uruchomić jako część skryptu instalacyjnego. Nie można zakładać, że Perl zostanie zainstalowany w systemie użytkownika. –

Odpowiedz

7

Tak, przynajmniej dla prostych rzeczy:

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

Wyjście z tego skryptu jest:

Output is xyzzy 

z xyzzy pochodzące z komendy echo.

Uruchamianie for /? z okna poleceń powinno dać ci pełniejszą listę opcji.

+0

Myślę, że jest to obsługiwane przez konstrukcje typu "for-in", a nie wewnętrznie za pomocą silnika wiersza poleceń systemu Windows. W moim przypadku nie działa: 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' to jedyny sposób, w jaki myślę, że możesz to zrobić. Nawet 'bash' nie uruchamia kodu z' $() ', to po prostu zastępuje standardowe wyjście z innego procesu. Nie różni się to od przechowywania w zmiennej środowiskowej, a następnie używania tej zmiennej, jak w mojej odpowiedzi. – paxdiablo

+0

@Mohsen - FOR jest wewnętrznym poleceniem, więc zdecydowanie jest obsługiwane przez silnik linii poleceń. – dbenham