Podczas pracy w środowisku Bash , aby ustawić wartość zmiennej jako wynik polecenia, zwykle robię:
var=$(command -args)
gdzie var
jest zmienną ustawioną przez polecenie command -args
. Mogę wtedy uzyskać dostęp do tej zmiennej jako $var
.
Bardziej konwencjonalnym sposobem na to, który jest kompatybilny z prawie każdą powłoką Uniksa, jest:
set var=`command -args`
To powiedziawszy, w jaki sposób mogę ustawić wartość zmiennej z wynikiem polecenia w pliku wsadowym systemu Windows ? Próbowałem:
set var=command -args
Ale uważam, że var
jest to ustawione command -args
raczej niż wyjście polecenia.
windows
batch-file
Francis
źródło
źródło
for /f "delims=" %a in ('ver') do @set foobar=%a
w wierszu polecenia. użyjfor /f "delims=" %%a in ('ver') do @set foobar=%%a
w plikach skryptówbash
. Następnie możesz pisać polecenia bash. Możesz także wykonywać skrypty bash.Należy być nieco ostrożnym, ponieważ polecenie wsadowe systemu Windows:
nie ma tej samej semantyki co instrukcja powłoki Unix:
Rozważ przypadek, w którym polecenie nie powiedzie się, powodując błąd.
W wersji powłoki Unix nadal występuje przypisanie do „theValue”, a każda poprzednia wartość jest zastępowana wartością pustą.
W wersji wsadowej systemu Windows jest to polecenie „for”, które obsługuje błąd, a klauzula „do” nigdy nie jest osiągnięta - więc każda poprzednia wartość „theValue” zostanie zachowana.
Aby uzyskać więcej semantyki uniksowej w skrypcie wsadowym systemu Windows, musisz upewnić się, że przypisanie ma miejsce:
Niepowodzenie wyczyszczenia wartości zmiennej podczas konwersji skryptu systemu Unix do partii systemu Windows może być przyczyną drobnych błędów.
źródło
command
; npfor /f "delims=" %%a in ('command1 ^| command2') do set VAR=%%a
. : .Oto jak to zrobić, gdy potrzebuję wyników zapytania do bazy danych w moim pliku wsadowym:
Klucz znajduje się w linii 2: „set / p” ustawia wartość „result” na wartość pierwszego wiersza (tylko) w „__query.tmp” za pośrednictwem operatora przekierowania „<”.
źródło
Jedynym sposobem, w jaki widziałem, jak to się robi, jest zrobienie tego:
ver
to polecenie wersji dla systemu Windows, które w moim systemie generuje:Źródło
źródło
Oficjalne dokumenty Microsoft dotyczące
for
poleceniaźródło