[Цитировать]

    sov44
  • 14940
  • Стаж: 7 лет 4 месяца
  • Сообщений: 32
  • Репутация:4

    [+] [-]
  • Откуда: г. Киров
dimo70, строчку
for /d %%c in ("!off:~0,-1!.txt") do set v_off=%%~nc
можно удалить, если не требуется отображение в консоли версии Office. Оставлял, как задел на случай типа
if /i "%v_off%"=="Office14" set "ver_off=Microsoft office 2010"
if /i "%v_off%"=="Office16" set "ver_off=Microsoft office 2016"
echo %ver_off%
81298Камрады, используйте переменные среды
Согласен, делал на скорую руку.

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
Изменил в связи с рекомендации выше.
Результат:
@echo off
setlocal enabledelayedexpansion
mode con cols=71 lines=19
color 2E
Title Windows and Office licence status:
echo Windows Activation Status:
for %%a in (%windir%\system32\slmgr.vbs) do set p_vbs=%%a
echo.
cscript "%p_vbs%" /dli| findstr /il /c:"Name:" /c:"Description:" /c:"Partial Product Key" /c:"License Status:" /c:"Volume activation expiration" /c:"Activation Interval"
echo ......................................................................
echo.
echo MS Office Activation Status:
echo.
for %%a in ("%ProgramFiles%","%ProgramFiles(x86)%") do (
for /f "delims=" %%b in ('where /r %%a "OSPP.VBS" 2^>nul') do set p_vbs=%%b& set off=%%~dpb
for /d %%c in ("!off:~0,-1!.txt") do set v_off=%%~nc
)
echo Found %v_off% on this machine.
echo.
if defined p_vbs (
cscript "%p_vbs%" /dstatus| findstr /il /c:"License Status" /c:"Remaining Grace"
)
echo.
pause
ActStatus

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
dimo70,
Вот это глупость:
cscript "%p_vbs%" /dli| findstr /il /c:"Name:" /c:"Description:" /c:"Partial Product Key" /c:"License Status:" /c:"Volume activation expiration" /c:"Activation Interval"
Во-первых, будет работать только с английской Виндовс (решаемо).
Во-вторых, Виндовс, активированная не через Volume, будет давать иные сведения (но тут я не знаток, просто мысль).

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
А если так?
cscript "%p_vbs%" /dli| findstr /il /c:"Partial Product Key" /c:"License Status:" /c:"Volume activation expiration" /c:"Activation Interval"
aa

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    sov44
  • 14940
  • Стаж: 7 лет 4 месяца
  • Сообщений: 32
  • Репутация:4

    [+] [-]
  • Откуда: г. Киров
dimo70, у вас одинаковое имя переменной как для пути к slmgr.vbs, так и для пути к OSPP.VBS. Должны быть разные имена, иначе можем получить ошибку на этапе определения статуса активации офиса при отсутствии офиса в системе.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
dimo70, зачем ты вообще парсишь вывод активации Винды? Оставь как есть. Он будет на языке системы (понятном пользователю).
81304Должны быть разные имена
... или очистка переменной перед повторным использованием.

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
Ander_73, а как задать очистку переменной? ah
Гуглил вроде, но ничего не нашел.

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
dimo70, очистка переменной - это задание ей пустого значения.
set "var="

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
Если так:

код

echo Windows Activation Status:
for %%a in (%windir%\system32\slmgr.vbs) do set h_vbs=%%a
echo.
cscript "%h_vbs%" /dli| findstr /il /c:"Partial Product Key" /c:"License Status:" /c:"Volume activation expiration" /c:"Activation Interval"
echo.
echo ......................................................................
echo.
echo MS Office Activation Status:
echo.
set "%%a="
for %%a in ("%ProgramFiles%","%ProgramFiles(x86)%") do (
for /f "delims=" %%b in ('where /r %%a "OSPP.VBS" 2^>nul') do set h_vbs=%%b& set off=%%~dpb
for /d %%c in ("!off:~0,-1!.txt") do set v_off=%%~nc
)
echo Found %v_off% on this machine.
echo.
if defined h_vbs (
cscript "%h_vbs%" /dstatus| findstr /il /c:"License Status" /c:"Remaining Grace"
)
можно считать, что очищено?

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
dimo70, ты вообще не читаешь, что тебе пишут?
81304у вас одинаковое имя переменной как для пути к slmgr.vbs, так и для пути к OSPP.VBS

81308set "%%a="
Это я даже комментировать не буду fp

[Цитировать]

    sov44
  • 14940
  • Стаж: 7 лет 4 месяца
  • Сообщений: 32
  • Репутация:4

    [+] [-]
  • Откуда: г. Киров
81308 можно считать, что очищено?
Нет. Вы должны обнулять переменную пути к vbs. Вместо set "%%a=" нужно писать set "h_vbs="
Но я-бы для каждого пути ввёл свою переменную, как это сделал sergeysvirid на предыдущей страничке, плюс добавил-бы общепонятное название офиса.
Title Windows and Office licence status:
echo Windows Activation Status:
echo.
for %%a in (%windir%\system32\slmgr.vbs) do set s_vbs=%%a
echo.
cscript "%s_vbs%" /dli
echo ...................................................................
echo.
echo MS Office Activation Status:
echo.
for %%a in ("%ProgramFiles%","%ProgramFiles(x86)%") do (
for /f "delims=" %%b in ('where /r %%a "OSPP.VBS" 2^>nul') do set p_vbs=%%b& set off=%%~dpb
for /d %%c in ("!off:~0,-1!.txt") do set v_off=%%~nc
)
if /i "%v_off%"=="Office12" set "ver_off=Microsoft office 2007"
if /i "%v_off%"=="Office14" set "ver_off=Microsoft office 2010"
if /i "%v_off%"=="Office16" set "ver_off=Microsoft office 2016"
echo.
if defined p_vbs (
echo %ver_off%.
echo.
cscript "%p_vbs%" /dstatus| findstr /il /c:"License Status" /c:"Remaining Grace"
)
if not defined p_vbs (
echo Microsoft office not found on this machine.
echo.
)
echo.
pause
exit

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
sov44, зачем вообще нужна эта переменная?
cscript %windir%\system32\slmgr.vbs /dli

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
sov44, сделал и перезалил.
Не могу понять почему у nik63 не получается сдесь.

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    sov44
  • 14940
  • Стаж: 7 лет 4 месяца
  • Сообщений: 32
  • Репутация:4

    [+] [-]
  • Откуда: г. Киров
81318sov44, зачем вообще нужна эта переменная?
cscript %windir%\system32\slmgr.vbs /dli
Не нужна. Банальный капипаст. Доверим исправить этот нюанс dimo70. ab

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
Ander_73, sov44, спасибо за помощь.
sov44, деликатный намек. ab aa
К сожалению не уверен, что успею исправить. Пробовал, но скрипт или перестает работать, или возвращается на внешнее окно.

_________________
Подпись отключена за нарушение правил форума

Страница 32 из 89


Показать сообщения:    

Текущее время: 29-Мар 08:01

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы