PDA

Показать полную графическую версию : [решено] Определение разрядности OS, если 32, выполнять 32.exe, если 62, то выполнить 64.exe


O L E G
29-12-2018, 13:16
Доброго времени суток,
Подскажите по скрипту, нужно добавить скрипт в программу, т.е запускаю программу она определяет что Винда 64x и выполняет файл 64 разрядности, если 32х то 32 битный.
Так как буду использовать 2ва файла, один 64 другой 32, hobocopy32.exe - hobocopy64.exe
Спасибо огромное, не хватает этого только момента.
Сам код

@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
set sPrevCP=%%i
chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
`@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.BrowseForFolder(0, 'SELECT DISK',1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
1^|more`
) do set sFolderName=%%i

chcp %sPrevCP% >nul

if defined sFolderName (
echo Выбрана папка: %sFolderName%

msg * Save to Reserve %sFolderName%a1_Backup

:: Восстановление службы vss
regedit /s vss.reg
TIMEOUT 2

:: Запуск Службы Теневого Копирования\Восстановление на Деф. настройки
net start VSS
TIMEOUT 2

:: Создаем папки
mkdir %sFolderName%a1_Backup\BCD\%date%\
mkdir %sFolderName%a1_Backup\CONFIG\%date%\
mkdir %sFolderName%a1_Backup\NTUSER\%date%\

:: сохраняем параметры загрузки (ms - dos \ кириллица dos)
bcdedit.exe /v > %sFolderName%a1_Backup\BCD\%date%\bootconf.rtf > %sFolderName%a1_Backup\BCD\%date%\BCD_%date%.cfg

:: резервная копия загрузчика
bcdedit.exe /export %sFolderName%a1_Backup\BCD\%date%\BCDfile

::
echo the path to the file %systemdrive%\bootmgr > %sFolderName%a1_Backup\BCD\%date%\bootmgr.log
hobocopy /y %systemdrive%\ %sFolderName%a1_Backup\BCD\%date%\ bootmgr >> %sFolderName%a1_Backup\BCD\%date%\bootmgr.log

echo the path to the file %windir%\System32\drivers\etc\hosts > %sFolderName%a1_Backup\CONFIG\%date%\hosts.log
hobocopy /y %windir%\System32\drivers\etc\ %sFolderName%a1_Backup\CONFIG\%date%\ hosts >> %sFolderName%a1_Backup\CONFIG\%date%\hosts.log

::
echo ###################################################### > %sFolderName%a1_Backup\CONFIG\%date%\config.log
echo the path to the file %windir%\system32\config\SAM >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
hobocopy /y %windir%\system32\config\ %sFolderName%a1_Backup\CONFIG\%date%\ SAM >> %sFolderName%a1_Backup\CONFIG\%date%\config.log

echo ###################################################### >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
echo the path to the file %windir%\system32\config\DEFAULT >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
hobocopy /y %windir%\system32\config\ %sFolderName%a1_Backup\CONFIG\%date%\ DEFAULT >> %sFolderName%a1_Backup\CONFIG\%date%\config.log

echo ###################################################### >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
echo the path to the file %windir%\system32\config\SECURITY >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
hobocopy /y %windir%\system32\config\ %sFolderName%a1_Backup\CONFIG\%date%\ SECURITY >> %sFolderName%a1_Backup\CONFIG\%date%\config.log

echo ###################################################### >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
echo the path to the file %windir%\system32\config\software >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
hobocopy /y %windir%\system32\config\ %sFolderName%a1_Backup\CONFIG\%date%\ software >> %sFolderName%a1_Backup\CONFIG\%date%\config.log

echo ###################################################### >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
echo the path to the file %windir%\system32\config\system >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
hobocopy /y %windir%\system32\config\ %sFolderName%a1_Backup\CONFIG\%date%\ system >> %sFolderName%a1_Backup\CONFIG\%date%\config.log

echo ###################################################### >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
echo the path to the file %windir%\system32\config\COMPONENTS >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
hobocopy /y %windir%\system32\config\ %sFolderName%a1_Backup\CONFIG\%date%\ COMPONENTS >> %sFolderName%a1_Backup\CONFIG\%date%\config.log

echo ###################################################### >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
echo the path to the file %windir%\system32\config\netlogon.ftl >> %sFolderName%a1_Backup\CONFIG\%date%\config.log
hobocopy /y %windir%\system32\config\ %sFolderName%a1_Backup\CONFIG\%date%\ netlogon.ftl >> %sFolderName%a1_Backup\CONFIG\%date%\config.log

echo the path to the file %userprofile%\NTUSER.DAT > %sFolderName%a1_Backup\NTUSER\%date%\NTUSER.log
hobocopy /y %userprofile%\ %sFolderName%a1_Backup\NTUSER\%date%\ NTUSER.DAT >> %sFolderName%a1_Backup\NTUSER\%date%\NTUSER.log

TIMEOUT 1
attrib +r +h %sFolderName%a1_Backup
msg * Completed!!! Reserved to %sFolderName%a1_Backup\
TIMEOUT 1
start %sFolderName%a1_Backup\

) else (
echo Папка не была выбрана.
)

YuS_2
29-12-2018, 13:54
>nul 2>&1 set ProgramFiles(x86)&&set xOS=x64||set xOS=x86
echo %xOS%

Iska
29-12-2018, 16:30
Хмм… Интересный способ.

O L E G
29-12-2018, 22:17
Странно, запустил скрипт показывает х86, а у меня х64
Нашел чуть другой вариант, рабочий из темы http://forum.oszone.net (http://forum.oszone.net/thread-142096-3.html)

Set xOS=x86& If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
Echo OS - %xOS%
::
@Echo Off
:: Варианит 1
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
Echo %xOS%
Pause

:: ===================================================================================
:: Варианит 2
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
Echo %xOS%
Pause

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из разных папок с именами x64 и x86
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
"c:\My Test\%xOS%\install.exe" /S

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из одной папки с именами сожержащими суффикс x64 и x86 (install_x64.exe и install_x86.exe)
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
"c:\My Test\install_%xOS%.exe" /S

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из разных папок, с разными именами и/или ключами
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
If %xOS%==x86 ("c:\My Test\i86\install.exe" /S) Else ("c:\My Test\AMD64\setup.msi" /qn)

Iska
29-12-2018, 22:26
Странно, запустил скрипт показывает х86, а у меня х64 »
Покажите, как и чем запускаете.

O L E G
29-12-2018, 22:32
https://imageban.ru/show/2018/12/29/68e3fc613039a6d83aa0831fe9371df2/jpg

Iska
29-12-2018, 23:22
O L E G, содержимое Вашего сообщения недоступно ни напрямую, ни через прокси.

O L E G
30-12-2018, 17:30
Iska, прошу прощения, запускал через cmd файл.
Система х64, а при запуске nul 2>&1 set ProgramFiles(x86)&&set xOS=x64||set xOS=x86
echo %xOS% пишет х86, с другими скриптами указанными выше, проблем таких нет

YuS_2
30-12-2018, 17:40
Система х64 »
Какая именно?

А что выдает такая команда в консоли:
set ProgramFiles(x86)
?

nul 2>&1 set ProgramFiles(x86)&&set xOS=x64||set xOS=x86 »
и кстати, при копировании строки с командами, копировать её надо полностью... :)

Iska
30-12-2018, 17:48
запускал через cmd файл. »
Как, через что, откуда запускали пакетный файл?

Вот пакетный файл, запущенный из-под x64-версии интерпретатора команд (%SystemRoot%\System32\cmd.exe):
https://i.imgur.com/AVOtcaX.png
Вот пакетный файл, запущенный из-под x86-версии интерпретатора команд (%SystemRoot%\SysWOW64\cmd.exe):
https://i.imgur.com/gYG8zA2.png

YuS_2
30-12-2018, 18:44
Как, через что, откуда запускали пакетный файл? »
это даже неважно, в данном случае, ибо там просто не хватает символа перенаправления потока вывода на устройство nul...

Iska
30-12-2018, 19:12
ибо там просто не хватает символа перенаправления потока вывода на устройство nul... »
В этом случае я лично получаю банальное предупреждение:https://i.imgur.com/i7ZYO5M.pngи отлуп:https://i.imgur.com/pGrYsXt.png

YuS_2
30-12-2018, 19:20
получаю банальное предупреждение »
А у меня, легко повторяется в точности то, что на скриншоте здесь (http://forum.oszone.net/post-2849018-6.html)
http://rgho.st/6YY62qF9k/thumb.png (http://rgho.st/6YY62qF9k.view)

Iska
30-12-2018, 19:49
А что там? Я его не вижу (http://forum.oszone.net/post-2849028.html#post2849028).

YuS_2
31-12-2018, 04:43
А что там? »
http://rgho.st/6bnCYknKX/thumb.png (http://rgho.st/6bnCYknKX.view)

Iska
31-12-2018, 10:51
YuS_2, спасибо, ясно. RGhost по нашей местности тож заблокирован доблестным РосКомНадзором, но Ваш скриншот я хотя бы через штатовский прокси увидел.

Вот у меня на Windows 7 SP1 x64 сначала идёт вышеуказанное предупреждение в GUI, и токмо затем вышеуказанный отлуп в CUI. Ну, и, само собой, показанное на скриншотах, Вашем и, возможно, коллеги O L E G, совсем не означает того, что он написал выше:
Странно, запустил скрипт показывает х86, а у меня х64 »
Система х64, а при запуске … пишет х86, »
поскольку пакетный файл «показывает/пишет» — в первую очередь — совсем другое. Ну, и Вы указали, по какой именно причине сие происходит.

Надеюсь, теперь все разобрались :).

Busla
31-12-2018, 11:25
O L E G, а чем вас не устраивает 32-разрядный hobocopy в 64-разрядной среде?

Странно, запустил скрипт показывает х86, а у меня х64
Нашел чуть другой вариант, рабочий из темы »
Разрядность ОС и разрядность среды, в которой вы запустили скрипт - не одно и то же

и в целом для вашего велосипеда с квадратными колёсами (http://forum.oszone.net/thread-338423.html) hobocopy не нужен и даже скорее противопоказан: vss придуман для получения консистентных данных, а не чтобы по-отдельности файлики вычитывать. И это делается штатными средствами, без сторонних костылей.

Рано вам ещё для других людей бэкапилки писать.

DJ Mogarych
05-01-2019, 20:24
пишет х86, с другими скриптами указанными выше, проблем таких нет »
С админскими правами надо запускать.

if /I "%Processor_Architecture%"=="x86" (
hobocopy32.exe
)

if /I "%Processor_Architecture%"=="AMD64" (
hobocopy64.exe
)




© OSzone.net 2001-2012