Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

batch file - variable

59  
  anatoli888 местный житель31.07.07 12:43
31.07.07 12:43 
как правильно присвоить переменной результат выполненой комманды
что то типа
set abc=<комманда>
abc должна содержать в этом примере то что ей выдаст <комманда>.
возможно ли это?
#1 
Russman коренной житель31.07.07 14:05
Russman
NEW 31.07.07 14:05 
в ответ anatoli888 31.07.07 12:43
"in bash $? returns the exit status of the last executed command."
http://www.linuxforums.org/forum/linux-programming-scripting/72247-capture-exit-...
---
У студента два праздника: Новый год и каждый день!
#2 
Murr коренной житель31.07.07 19:13
Murr
NEW 31.07.07 19:13 
в ответ anatoli888 31.07.07 12:43, Последний раз изменено 31.07.07 20:08 (Murr)
Команды - не функции - они ничего не возвращают.
Но они могут установить значение для переменной окружения - смотри переменную errerlevel.
P.S. мелкомягкие несколько раз меняли интерпритацию "области видимости" для переменных окружения и сейчас там черт ногу сломит - надо смотреть конкретно под систему.
#3 
  anatoli888 местный житель31.07.07 19:52
NEW 31.07.07 19:52 
в ответ Murr 31.07.07 19:13, Последний раз изменено 31.07.07 19:54 (anatoli888)
я имел ввиду к примеру more primer.txt - будет выдано содержание файла primer.txt
это содержание я хочу передать переменной, но не все а только выборочно. для этого я установил себе SFU (Services For Unix) и при помощи sed, awk, cat, head, tail ... выбираю то что мне нужно. вариант set /P var=< primer.txt работает но не для текста в кодировке koi8r. если к примеру взять primer.txt с содержанием "Мой самый любимый стих" в кодировке koi8r т.е. : "нПК УБНЩК МАВЙНЩК УФЙИ" и применить следующий код:
set /P var=< primer.txt
echo %var% > primer-temp.txt
то в primer-temp.txt мы получим следующее: -╝╘ б=-л╘ ╚о╕Ё-л╘ бвЁе
т.е. на нПК УБНЩК МАВЙНЩК УФЙИ налогается кодировка 866. я качнул консольный прибамбас для изменения кодировки и пайпом попытался изменить ситуацию, но никак немогу добиться того что бы в var содержалось то что находится в primer.txt (а именно это и говорится в: set /P var=< primer.txt )
я в шоке.
у кого нить есть идеи. желательно не переходить на vbs
#4 
  anatoli888 местный житель31.07.07 19:58
NEW 31.07.07 19:58 
в ответ Russman 31.07.07 14:05
я уже подумываю перевести всю мою писанину в shell script для юникса и поставить на целевом компе виртуальную машину
#5 
Murr коренной житель31.07.07 20:26
Murr
NEW 31.07.07 20:26 
в ответ anatoli888 31.07.07 19:52
я в шоке.
-----
Я - тоже.
rem - может не работать - пишу по памяти, без проверки
set file="primer"
set source=%file%".txt"
set target=%file%-temp.txt
copy /b %source% %target%
Это то, что должно быть в батнике - спецификация имен файлов и вызов команды выполняющей заданную обработку этих файлов. Сам бач заставлять обрабатывать файлы - не стоит...
#6 
  anatoli888 местный житель01.08.07 03:10
NEW 01.08.07 03:10 
в ответ Murr 31.07.07 20:26
наковырял в чем была проблема.
зря грешил на set. это оказался sed из пакета SFU предлагаемый самим майкрософтом, но от этого не легче.
пошагово выдавал все в debug.txt и при выполнении: sed "s@xxx@тут должен быть текст в кодрировке koi8r@g" текст коверкался.
буду проверять остальные, переходить на shell script юникса. мне в нем удобней и понятней.
спасибо за поддержку!
#7