serg130270
- Стаж: 5 лет 7 месяцев
- Сообщений: 24
- Репутация:0[+] [-]
|
78140serg130270 Спасибо Вам дружище за помощь. Мне - за что? - Всё сделали сами - я только компанию составил Добавлено через 8 минут 23 секунды:
Дружище спасибо Вам огромное за внимание, ничего не получается Наверное потому что вы из WinPe всё это делаете - скрипт в пешке похоже не работает. Нет, из под Windows
Последний раз редактировалось: serg130270 (2020-06-10 00:25), всего редактировалось 1 раз
|
Gvint64
- Стаж: 4 года 6 месяцев
- Сообщений: 624
- Репутация:71[+] [-]
|
Не не пойду - а то наварочаю чего нибудь не тое! Windows 7 ? - есть помоему какието нюансы в синтаксисе . Я на ltsc проверял - но со своими путями.
|
serg130270
- Стаж: 5 лет 7 месяцев
- Сообщений: 24
- Репутация:0[+] [-]
|
78142Не не пойду - а то наварочаю чего нибудь не тое! Windows 7 ? Я на ltsc проверял. Нет Windows 10Спасибо огромное. Пока
|
serg130270
- Стаж: 5 лет 7 месяцев
- Сообщений: 24
- Репутация:0[+] [-]
|
78144@echo off SETLOCAL EnableDelayedExpansion for /f %%i in ('dir /b/s/ad "%~dp0drv" ^| findstr /i ".*x64.*"') do ( set "d=%%i" xcopy /q/s/e/y/r/h "!d!" "!d:%~dp0drv=%~dp0drv2\!\" ) endlocal pause вот так я проверял - просто создал две папки drv и drv2 - в папке drv подпапки к примеру: 1x64 2x64 3x64........ в них папки с файлами -добавил папки с x86 в имени для эксперимента - копируется в drv2 только если в имени папки x64. Здравствуй Gvint64!!!!! Может кому пригодится Нашел решение: for /f "tokens=*" %%z in ('"dir /ad /b "%~dp0Addons\%ImageArchitecture%\Temp\"" 2^>nul') do ( echo.Copying [%%z] files to Install.wim xcopy "%~dp0Addons\%ImageArchitecture%\Temp\%%z" "%~dp0Mount\%%i\" /h /e /g /q /r /y )
|
cartmenezz
- Стаж: 9 лет 2 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
Приветствую Решил на досуге переносной наборчик прог оформить, разложить в зашифрованные архивы, дабы не привлекать раньше времени внимания антивирусов - чтобы меньше сканировали флешку. Всякого рода активаторы, само собой, итак уже упакованы (чтоб их не скушали). Но бывает архиватор еще не установлен (по хорошему можно его изначально поставить), или настройка вообще не планируется а надо просто какую-нибудь утилитку запустить. Так что подумал что самораспаковки были бы поудобнее. Но хоть на запароленный sfx (обычный, полученный 7zip) антивирусы и не огрызаются, все равно внимание ему уделяют (сканируют), а если их еще много рядышком лежит... В общем пришел к такому варианту: 0) содержимое корневой папки: папка 7zip (в ней 7z.exe, 7z.dll); файл1.7z, файл1.cmd; файл2.7z, файл2.cmd; файл3.7z, файл3.cmd;... 1) допустим файлы проги в папке под названием Primer 2) папка Primer упаковывается в зашифрованный архив Primer.7z , пароль: 2020 (например) 3) рядом кладется одноименный батник Primer.cmd , с примерным содержанием:@echo off cd /d "%~dp0" "7zip\7z.exe" x "%~n0.7z" -o"%UserProfile%\Desktop\-SOFT-" -y -p2020 explorer "%UserProfile%\Desktop\-SOFT-\%~n0" ,где %~n0 - берется имя батника без расширения, к нему добавляется расширение 7z, поэтому важно чтобы имена у архива и батника совпадали (так же важно чтобы имя папки в архиве было таким же, так как в конце батник открывает папку с одноименным названием... хотя пока еще не уверен, нужно ли это открытие папки). В итоге батник получается универсальным, для следующего архива просто делается его копия (и переименовывается, под название нового архива). В принципе, все итак работает. Но есть неприятный момент - распаковка идет в %UserProfile%\Desktop\ , как по мне Рабочий стол - самый подходящий вариант, но если расположение папки изменено, то путь уже как бы не правильный. Столкнулся у себя же на компе, сначала не мог понять - все распаковалось, папка открылась, файлы на месте,.. а потом думаю надо бы удалить, итак на раб столе царит вакханалия)) а папки то и нет, совсем забыл, что у меня пользовательские папки перенесены на другой диск (через Свойства - Расположение), папка с прогой была на месте (в %UserProfile%\Desktop), вот только это уже не папка Рабочего стола. Собственно вопрос: можно ли этот момент как-то обыграть в батнике, как-нибуть иначе прописать путь до Рабочего стола, чтобы учитывалась возможность того, что расположение папки изменено? Добавлено: вроде удалось что-то нагуглить, теперь батник имеет такой вид:@echo off setlocal cd /d "%~dp0" FOR /F "usebackq tokens=3 skip=1" %%i in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) DO SET DESKTOPDIR=%%i FOR /F "usebackq delims=" %%i in (`ECHO %DESKTOPDIR%`) DO SET DESKTOPDIR=%%i "7zip\7z.exe" x "%~n0.7z" -o"%DESKTOPDIR%\-SOFT-" -y -p2020 explorer "%DESKTOPDIR%\-SOFT-\%~n0" endlocal кажется работает, но неуверен насколько это универсальный вариант. может есть более правильное решение?
|
cartmenezz
- Стаж: 9 лет 2 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
korsak7, так это ж не пакет для автоустановки, там в основном активаторы, портативки,... ну и какие-то инсталляторы тоже, но все это - попользоваться и удалить (либо установить), т.е. то что в архивах не предполагается оставлять на ПК: распаковал в один клик, тут же воспользовался (запустил/установил) и удалил
|
korsak7
- Стаж: 9 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
в архивах не предполагается оставлять на ПК: распаковал в один клик, тут же воспользовался (запустил/установил) и удалил тогда может сделать не архив+батник а самораспаковку(с паролем) с запуском установки?
|
cartmenezz
- Стаж: 9 лет 2 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
korsak7, просто хотел полного отсутствия exe'файлов, чтоб антивирусы даже не интересовались. порой когда на слабом ноуте втыкаешь флешку где россыпью все это дело лежит, то прям чувствуется как комп напрягается, чуть менее выражено если все по отдельным папочкам.. вот и захотел как-нибудь извратиться)) PS: не исключено что это дело у меня не приживется, но пока идея мне нравится. Осталось только батник доработать. Хотя вроде уже работает, просто неуверен насколько надёжен вариант поиска пути к раб.столу через reg query. Плюс команда FOR у меня слабое место - есть конечно тонны команд которых я вообще не знаю, так как не были нужны, с этой же частенько сталкиваюсь но приходится в основном копипастить, не могу до конца вникнуть в ее работу (все эти delims, tokens,..). в данном примере, который взял в батник - несовсем понимаю зачем вторая команда FOR, пытался почитать про "usebackq delims=", так понял что там берется вывод первой команды и уже он назначается в переменную %DESKTOPDIR%, но вот только зачем? если бы там что-то отфольтровывалось, чтобы привести в правильный вид, но в данном случае значение в переменной %DESKTOPDIR% идентично после первой команды, вторая ничего не меняет... может на других версиях винды это не так (проверял на 10х64)
|
cartmenezz
- Стаж: 9 лет 2 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
раз уж такое дело, спрошу сразу еще кое что, ато давно покоя не дает. Какой наиболее правильный (надежный) вариант проверки разрядности системы? Ато попадалось довольно много вариаций:Вариант 1IF %PROCESSOR_ARCHITECTURE% == AMD64 ( echo OS type: x64 ) ELSE ( echo OS type: x86 )Вариант 2if defined PROCESSOR_ARCHITEW6432 (goto LABEL_X64) if %PROCESSOR_ARCHITECTURE%==IA64 (goto LABEL_X64) if %PROCESSOR_ARCHITECTURE%==AMD64 (goto LABEL_X64) if %PROCESSOR_ARCHITECTURE%==x86 (goto LABEL_X86) goto LABEL_NON :LABEL_X64 echo OS type: x64 goto LABEL_END :LABEL_X86 echo OS type: x86 goto LABEL_END :LABEL_NON echo OS type: undefined goto LABEL_ENDВариант 3Set xOS=x64& (If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86)Вариант 4IF %PROCESSOR_ARCHITECTURE% == x86 (IF NOT DEFINED PROCESSOR_ARCHITEW6432 goto bit32) goto bit64 :bit32 echo OS type: x86 pause exit :bit64 echo OS type: x64 pause exitВариант 5IF EXIST "%SystemDrive%\Program Files (x86)" ( echo OS type: x64 pause exit ) ELSE ( echo OS type: x86 pause exit ) EXITВариант 6if defined ProgramW6432 ( echo OS type: x64 pause exit ) else ( echo OS type: x86 pause exit ) или может еще как-нибудь?
|
korsak7
- Стаж: 9 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
5 вариант сразу в топку Насколько помню Nikzzzz использует 3 вариант
|
Отправлено: 15-Июн-2020 07:58
(спустя 1 час 13 минут)
sergeysvirid
- Стаж: 9 лет
- Сообщений: 2582
- Репутация:127[+] [-]
- Откуда: 65 регион (GMT+11)
|
cartmenezz, Приветствую! Ну в принципе любой из вариантов имеет право на существование. Кому как удобнее и понятнее, да ведь и главное, чтоб работал вариант, а как написать - это уже кому как нравится. Да и смотря в каких случаях. Если нам нужно просто определить и задать в переменную, например %architecture% архитектуру процессора на данной машине, то можно прописать в скрипте как то так: IF %PROCESSOR_ARCHITECTURE% == AMD64 (set "architecture=x64") Else (set "architecture=x86") Но ведь на машину с архитектурой AMD64 мы ведь можем и 32-разрядную систему установить, правильно? А на ней как раз таки 64-битные приложения и не запустятся. Поэтому перед запуском нам необходимо определить какой разрядности автоматом будет запускаться приложение, например, Proga_x64.exe или Proga_x86.exe. Ну можно к примеру по наличию (или отсутствию) в системе каталога SysWOW64 If Exist %WinDir%\SysWOW64 (set "arch=x64") Else (set "arch=x86") start "" /w "%~dp0Proga_%arch%.exe"-Как то так... Из меня честно говоря скриптописец-то никакой, но раз никто не высказывает своё мнение, то вот решил вставить свои "пять копеек"
|
Отправлено: 15-Июн-2020 10:30
(спустя 2 часа 31 минута)
cartmenezz
- Стаж: 9 лет 2 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
korsak7, sergeysvirid, Благодарю за помощь.783855 вариант сразу в топку это потому что папка Program Files (x86) может и ошибочно присутствовать (из-за какого-нибудь кривого репака, самой сборки винды,..) ???78386... архитектуру процессора на данной машине... ... Но ведь на машину с архитектурой AMD64 мы ведь можем и 32-разрядную систему установить на сто процентов не уверен, но как я понял, %PROCESSOR_ARCHITECTURE% не определяет тип процессора, а определяет тип процесса. Вроде как вернёт разрядность cmd, из которой выполняется скрипт... но не уверен, потому что попадалась и другая инфа (тот же 2й вариант, например, наводит смуту у меня в голове наличием значения этой переменной IA64)
|
Ander_73
- Стаж: 7 лет 9 месяцев
- Сообщений: 3821
- Репутация:127[+] [-]
|
78388наличием значения этой переменной IA64 Это троллинг. IA64 требует собственного софта и ОС. Вряд ли мы в этой жизни его увидим. Учитывая, что платформа умерла.
|
Страница 28 из 94
Текущее время: 26-Ноя 02:23
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|