2009-06-15 3 views
41

Я хотел бы, чтобы преобразовать этот /bin/sh синтаксис в широко совместимый пакетном сценарий с Windows:Как сохранить имя хоста в переменной в файле .bat?

host=`hostname` 
echo ${host} 

Как это сделать так, что он будет работать на любом Windows Vista, Windows XP и Windows 2000 с машиной?

Чтобы уточнить: я хотел бы продолжить работу в программе и использовать имя хоста, которое хранится в переменной host. Другими словами, большая цель программы - не просто эхо-имя хоста.

ответ

49

Обычно я читаю командный вывод в переменных с помощью команды FOR, поскольку он сохраняет необходимость создания временных файлов. Например:

FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i 

Примечание. Вышеприведенный оператор будет работать в командной строке, но не в пакетном файле. Для того, чтобы использовать его в пакетном файле избежать % в FOR заявлении, поместив их в два раза:

FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i 
ECHO %MYVAR% 

Там намного больше вы можете сделать с FOR. Для получения дополнительной информации просто введите HELP FOR в командной строке.

+0

очень приятно, хотя для конструкции контура сильно перегружена ИМО. Переключится, чтобы использовать это. Благодаря! –

+1

Вы правы - FOR - это, в основном, швейцарский армейский скрипт, в котором вы можете использовать его для решения большинства проблем. –

+0

Если вы хотите повторить задание (для этого примера это не имеет смысла, так как вы просто запрашиваете имя хоста один раз в прогоне), тогда не забудьте использовать 'SETLOCAL ENABLEDELAYEDEXPANSION' (см.' HELP SETLOCAL') и используйте '! MYVAR!' вместо '% MYVAR%' –

44

Хмм - что-то в этом роде?

set host=%COMPUTERNAME% 
echo %host% 

EDIT: расширение на ответ джиттера и с использованием методы в ответ на this question установить переменное окружение с результатом запуска приложения из командной строки:

@echo off 
hostname.exe > __t.tmp 
set /p host=<__t.tmp 
del __t.tmp 
echo %host% 

В любом случае, «host» создается как переменная среды.

+0

, который работает - спасибо –

1

Просто создайте файл .bat с линией

hostname 

в нем. Вот и все. Windows также поддерживает команду hostname.

+1

извините, я должен был быть более ясным. хотел использовать значение, хранящееся в переменной, а не просто эхо. –

10

Я использую переменные окружения COMPUTERNAME:

copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32 
srvcheck \\%COMPUTERNAME% > c:\shares.txt 
echo %COMPUTERNAME% 
Смежные вопросы