Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Определение системы с условием (http://forum.oszone.net/showthread.php?t=351832)

olga_maksi29 03-09-2022 11:26 2991649

Определение системы с условием
 
Вложений: 1
  • 11.jpg (86.80 KB, скачиваний: 13)
Доброе утро. Помогите горю горевать
Пытаюсь создать bat файл ( который будет хранится в сетевой папке ) с определённым, но простым назначением
1) Требуется что бы bat файл запускался с повышенными правами (c запросом UAC) или с запросом на повышения прав
но с этим относительно понятно .
2) Дальше определялась бы система по нескольким условиям:
если это Windows XP
- применить все reg файлы и bat файлы в папке с батником с директории WindowsXP
Windows 7 и выше (8/10/11 включительно)
- применить все reg файлы и bat файлы в папке с батником с директории Windows7+
Windows 8/8.1
- применить все reg файлы и bat файлы в папке с батником с директории Windows8+
Windows 10
- применить все reg файлы и bat файлы в папке с батником с директории Windows10
Windows 11
- применить все reg файлы и bat файлы в папке с батником с директории Windows11

определить разрядность системы (x64/x86 )( всё выше windows XP)
- применить все reg файлы и bat файлы в папке с батником с директории x64

разрядность системы (x86)
- применить все reg файлы и bat файлы в папке с батником с директории x86

Вроде всё просто

1) решение или bat конвертировать в exe и добавлять манифест или я читала о способе добавить в bat asInvoker
2) второй пункт у меня получается очень большим
Может кто сможет подсказать элегантное и простое решение.

olga_maksi29 05-09-2022 10:42 2991796

Примерно у меня вот так вышло :)
Код:

@echo off
SETLOCAL
set __COMPAT_LAYER=RunAsHighest
set curr_OS=
Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" ( If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86)
REM
ver | findstr /i "5\.1\."        && (set curr_OS=WindowsXP& GOTO :NOTTESTEDWIN)
ver | findstr /i "6\.1\." > nul  && (set curr_OS=Windows7+& GOTO :TESTEDWIN & GOTO :TESTEDOSX)
ver | findstr /i "6\.2\." > nul  && (set curr_OS=Windows8+& GOTO :NOTTESTEDWIN & GOTO :TESTEDWIN& GOTO :TESTEDOSX)
ver | findstr /i "6\.3\." > nul  && (set curr_OS=Windows8+& GOTO :NOTTESTEDWIN & GOTO :TESTEDWIN& GOTO :TESTEDOSX)
ver | findstr /i "10\.0\." > nul && (set curr_OS=Windows10& GOTO :NOTTESTEDWIN & GOTO :TESTEDWIN& GOTO :TESTEDOSX)
ver | findstr /i "11\.0\." > nul && (set curr_OS=Windows11& GOTO :NOTTESTEDWIN & GOTO :TESTEDWIN& GOTO :TESTEDOSX)
echo xOS
:NOTTESTEDWIN
for %%k in (%~dp0%curr_OS%\*.reg) do regedit.exe /s "%%~k"
for %%i in (%~dp0%curr_OS%\*.bat) do call "%%~i"
:TESTEDWIN
for %%k in (%~dp0Windows7+\*.reg) do regedit.exe /s "%%~k"
for %%i in (%~dp0Windows7+\*.bat) do call "%%~i"
:TESTEDOSX
for %%k in (%~dp0%xOS%\*.reg) do regedit.exe /s "%%~k"
for %%i in (%~dp0%xOS%\*.bat) do call "%%~i"
pause


DJ Mogarych 05-09-2022 10:53 2991797

Вроде того (powershell):
Код:

#Requires -RunAsAdministrator

$os = gwmi win32_operatingsystem |select caption, osarchitecture

switch ($os.caption -replace '.*Windows (XP|[\d\.]+).*','$1') {
    'XP'{
        "применить все reg файлы и bat файлы в папке с батником с директории WindowsXP"
    }
    '7' {
        "применить все reg файлы и bat файлы в папке с батником с директории Windows7+"
    }
    '8*' {
        "применить все reg файлы и bat файлы в папке с батником с директории Windows7+"
        "применить все reg файлы и bat файлы в папке с батником с директории Windows8+"
    }
    '10' {
        "применить все reg файлы и bat файлы в папке с батником с директории Windows7+"
        "применить все reg файлы и bat файлы в папке с батником с директории Windows10"
    }
    '11' {
        "применить все reg файлы и bat файлы в папке с батником с директории Windows7+"
        "применить все reg файлы и bat файлы в папке с батником с директории Windows11"
    }
}

switch ($os.osarchitecture -replace '\D') {
    '32' {
        "применить все reg файлы и bat файлы в папке с батником с директории x86"
    }
    '64' {
        "применить все reg файлы и bat файлы в папке с батником с директории x64"
    }
}

Как именно "применить все reg файлы и bat файлы", не подскажу, но вряд ли это трудно сделать самому.


Время: 23:51.

Время: 23:51.
© OSzone.net 2001-