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

    serg130270
  • 20635
  • Стаж: 5 лет
  • Сообщений: 24
  • Репутация:0

    [+] [-]
78140serg130270 Спасибо Вам дружище за помощь. Мне - за что? - Всё сделали сами - я только компанию составил aa ag
Добавлено через 8 минут 23 секунды:
Дружище спасибо Вам огромное за внимание, ничего не получается
Наверное потому что вы из WinPe всё это делаете - скрипт в пешке похоже не работает.
Нет, из под Windows


Последний раз редактировалось: serg130270 (2020-06-10 00:25), всего редактировалось 1 раз

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

    Gvint64
  • 24573
  • Стаж: 3 года 11 месяцев
  • Сообщений: 568
  • Репутация:63

    [+] [-]
Не не пойду - а то наварочаю чего нибудь не тое!
Windows 7 ? - есть помоему какието нюансы в синтаксисе . Я на ltsc проверял - но со своими путями.

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

    serg130270
  • 20635
  • Стаж: 5 лет
  • Сообщений: 24
  • Репутация:0

    [+] [-]
78142Не не пойду - а то наварочаю чего нибудь не тое!
Windows 7 ? Я на ltsc проверял.
Нет Windows 10Спасибо огромное. Пока

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

    Gvint64
  • 24573
  • Стаж: 3 года 11 месяцев
  • Сообщений: 568
  • Репутация:63

    [+] [-]
@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.
Мы тут намусорили немножко - раз вопрос решился - ненужное удалите. Спасибо! aa

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

    serg130270
  • 20635
  • Стаж: 5 лет
  • Сообщений: 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
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Приветствую aa
Решил на досуге переносной наборчик прог оформить, разложить в зашифрованные архивы, дабы не привлекать раньше времени внимания антивирусов - чтобы меньше сканировали флешку. Всякого рода активаторы, само собой, итак уже упакованы (чтоб их не скушали). Но бывает архиватор еще не установлен (по хорошему можно его изначально поставить), или настройка вообще не планируется а надо просто какую-нибудь утилитку запустить. Так что подумал что самораспаковки были бы поудобнее. Но хоть на запароленный 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
кажется работает, но неуверен насколько это универсальный вариант. может есть более правильное решение?

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

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
Рабочий стол - самый подходящий вариант
для блондинок ag
почему не сохранять например в C:\-SOFT- а на рабстол выводить ярлык на папку?

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

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
korsak7, так это ж не пакет для автоустановки, там в основном активаторы, портативки,... ну и какие-то инсталляторы тоже, но все это - попользоваться и удалить (либо установить), т.е. то что в архивах не предполагается оставлять на ПК: распаковал в один клик, тут же воспользовался (запустил/установил) и удалил

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

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
в архивах не предполагается оставлять на ПК: распаковал в один клик, тут же воспользовался (запустил/установил) и удалил
тогда может сделать не архив+батник а самораспаковку(с паролем) с запуском установки?

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

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
korsak7, просто хотел полного отсутствия exe'файлов, чтоб антивирусы даже не интересовались. порой когда на слабом ноуте втыкаешь флешку где россыпью все это дело лежит, то прям чувствуется как комп напрягается, чуть менее выражено если все по отдельным папочкам..
вот и захотел как-нибудь извратиться))
PS: не исключено что это дело у меня не приживется, но пока идея мне нравится. Осталось только батник доработать. Хотя вроде уже работает, просто неуверен насколько надёжен вариант поиска пути к раб.столу через reg query. Плюс команда FOR у меня слабое место - есть конечно тонны команд которых я вообще не знаю, так как не были нужны, с этой же частенько сталкиваюсь но приходится в основном копипастить, не могу до конца вникнуть в ее работу (все эти delims, tokens,..). в данном примере, который взял в батник - несовсем понимаю зачем вторая команда FOR, пытался почитать про "usebackq delims=", так понял что там берется вывод первой команды и уже он назначается в переменную %DESKTOPDIR%, но вот только зачем? если бы там что-то отфольтровывалось, чтобы привести в правильный вид, но в данном случае значение в переменной %DESKTOPDIR% идентично после первой команды, вторая ничего не меняет... может на других версиях винды это не так (проверял на 10х64)

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

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
раз уж такое дело, спрошу сразу еще кое что, ато давно покоя не дает. Какой наиболее правильный (надежный) вариант проверки разрядности системы? Ато попадалось довольно много вариаций:

Вариант 1

IF %PROCESSOR_ARCHITECTURE% == AMD64 (
echo OS type: x64
) ELSE (
echo OS type: x86
)

Вариант 2

if 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

Вариант 3

Set xOS=x64& (If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86)

Вариант 4

IF %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

Вариант 5

IF EXIST "%SystemDrive%\Program Files (x86)" (
echo OS type: x64
pause
exit
) ELSE (
echo OS type: x86
pause
exit
)
EXIT

Вариант 6

if defined ProgramW6432 (
echo OS type: x64
pause
exit
) else (
echo OS type: x86
pause
exit
)
или может еще как-нибудь?

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

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
5 вариант сразу в топку
Насколько помню Nikzzzz использует 3 вариант

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

    sergeysvirid
  • 104
  • Стаж: 9 лет 4 месяца
  • Сообщений: 2498
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
cartmenezz,
Приветствую! aa
Ну в принципе любой из вариантов имеет право на существование. Кому как удобнее и понятнее, да ведь и главное, чтоб работал вариант, а как написать - это уже кому как нравится.
Да и смотря в каких случаях. Если нам нужно просто определить и задать в переменную, например %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"
-Как то так... Из меня честно говоря скриптописец-то никакой, но раз никто не высказывает своё мнение, то вот решил вставить свои "пять копеек" ah ag

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

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
korsak7, sergeysvirid, Благодарю за помощь.
783855 вариант сразу в топку
это потому что папка Program Files (x86) может и ошибочно присутствовать (из-за какого-нибудь кривого репака, самой сборки винды,..) ???
78386... архитектуру процессора на данной машине...
... Но ведь на машину с архитектурой AMD64 мы ведь можем и 32-разрядную систему установить
на сто процентов не уверен, но как я понял, %PROCESSOR_ARCHITECTURE% не определяет тип процессора, а определяет тип процесса. Вроде как вернёт разрядность cmd, из которой выполняется скрипт... но не уверен, потому что попадалась и другая инфа (тот же 2й вариант, например, наводит смуту у меня в голове наличием значения этой переменной IA64)

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

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

    [+] [-]
78388наличием значения этой переменной IA64
Это троллинг. IA64 требует собственного софта и ОС. Вряд ли мы в этой жизни его увидим. Учитывая, что платформа умерла.

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


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

Текущее время: 20-Апр 16:33

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


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