Я бы порекомендовал некоторое короткое замыкание, чтобы сделать вещи немного проще, и использование object.ReferenceEquals
для короткого замыкания для случаев, когда массивы одинаковы (a1 = b1
):
public bool Equality(byte[] a1, byte[] b1)
{
// If not same length, done
if (a1.Length != b1.Length)
{
return false;
}
// If they are the same object, done
if (object.ReferenceEquals(a1,b1))
{
return true;
}
// Loop all values and compare
for (int i = 0; i < a1.Length; i++)
{
if (a1[i] != b1[i])
{
return false;
}
}
// If we got here, equal
return true;
}
Я обычно считывать вывод команды в переменные с помощью команды 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
вы можете сделать гораздо больше.
хм - что-то вроде этого?
set host=%COMPUTERNAME%
echo %host%
РЕДАКТИРОВАТЬ : расширение ответа на дрожание и использование техники в ответе на этот вопрос для установки переменной среды с результат запуска приложения из командной строки:
@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
echo %host%
В любом случае host создается как переменная среды.
Просто создайте файл .bat со строкой
hostname
в нем. Вот и все. Windows также поддерживает команду hostname.