Gvint64
- Стаж: 4 года 7 месяцев
- Сообщений: 626
- Репутация:72[+] [-]
|
mat.86, Скрипт от администратора запускали?
|
Отправлено: 11-Дек-2020 20:42
(спустя 2 часа 19 минут)
mat.86
- Стаж: 8 лет 6 месяцев
- Сообщений: 225
- Репутация:1[+] [-]
|
Вообщем вот так срабатывает, запись появляется во всех профиляхFor /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%SystemDrive%\Users" ^| FINDSTR /V /B /I /C:"All Users" /C:"%username%"`) DO ( reg load HKLM\Custom "%SystemDrive%\Users\%%i\NTUSER.DAT" Reg.exe add "HKLM\Custom\1" /v "TEST1" /t REG_SZ /d "111" /f reg unload HKLM\Custom ) Это если напрямую указать папку с профилями "%SystemDrive%\Users", а если так (c определением местоположения профилей)for /f "usebackq tokens=3,3* delims== " %%i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory`) do set profiles=%%i for /f "usebackq delims==" %%i in (`echo %profiles%`) do set profiles=%%i For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%profiles%" ^| FINDSTR /V /B /I /C:"All Users" /C:"%username%"`) DO ( reg load HKLM\Custom "%profiles%\%%i\NTUSER.DAT" Reg.exe add "HKLM\Custom\1" /v "TEST1" /t REG_SZ /d "111" /f reg unload HKEY_USERS\Custom ) не работает в семерке, работало только в XP. Да запускал от администратора
Последний раз редактировалось: mat.86 (2020-12-17 03:26), всего редактировалось 1 раз
|
sergeysvirid
- Стаж: 10 лет
- Сообщений: 2601
- Репутация:127[+] [-]
- Откуда: 65 регион (GMT+11)
|
82022если windows XP, переход на выполнение сценария1, если не windows XP (все что старше), то переход на выполнение сценария2. mat.86, Может как то так: @echo off cd /D "%~dp0" for /f "tokens=6 delims=[]. " %%G in ('ver') do if %%G EQU 2600 goto :1 for /f "tokens=6 delims=[]. " %%G in ('ver') do if %%G GTR 2600 goto :2 :1 Echo В этом блоке прописываем команды для Windows XP (версия 5.1.2600.*) pause >nul exit :2 Echo В этом блоке прописываем команды для Windows выше версии *.2600.* pause >nul exit
|
mat.86
- Стаж: 8 лет 6 месяцев
- Сообщений: 225
- Репутация:1[+] [-]
|
sergeysvirid, спасибо большое, все работает
|
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3881
- Репутация:127[+] [-]
|
ver| >nul find "5.1."&& goto WinXP|| goto Vista
|
dimo70
- Стаж: 7 лет
- Сообщений: 3787
- Репутация:27[+] [-]
- Откуда: BG
|
82025ver| >nul find "5.1."&& goto WinXP|| goto Vista Мастер!
_________________ Подпись отключена за нарушение правил форума
|
mat.86
- Стаж: 8 лет 6 месяцев
- Сообщений: 225
- Репутация:1[+] [-]
|
Ander_73, спасибо, тоже работает
|
bios83
- Стаж: 9 лет
- Сообщений: 101
- Репутация:16[+] [-]
|
Привет, Требуется помощь в оптимизации скрипта@echo off mode con lines=2 cols=30 CD /d "%~dp0" ::В этой части мы задаем пароль для anydesk set pass=123123123 set "F=%systemdrive%\AnyDesk" if not exist "%~dp0AnyDesk.exe" (if not exist "%~dp0Download_AnyDesk.cmd" (echo @echo off echo mode con lines=2 cols=25 echo cd /d "%%~dp0" echo cls echo echo Downloading AnyDesk echo if not exist "%%~dp0AnyDesk.exe" cscript ^//nologo "%%~f0?.wsf" ^//job:Download echo exit ^/b echo --- Begin wsf script --- Download ---^> echo ^<package^> echo ^<job id="Download"^>^<script language="VBScript"^> echo Set oXMLHTTP = CreateObject^("MSXML2.XMLHTTP"^) echo oXMLHTTP.Open "GET", "https://download.anydesk.com/AnyDesk.exe", 0 echo oXMLHTTP.Send echo Set oADOStream = CreateObject^("ADODB.Stream"^) echo oADOStream.Mode = 3 echo oADOStream.Type = 1 echo oADOStream.Open echo oADOStream.Write oXMLHTTP.responseBody echo oADOStream.SaveToFile "AnyDesk.exe", 2 echo ^<^/script^>^<^/job^> echo ^<^/package^> )> "%~dp0Download_AnyDesk.cmd" cls echo Downloading AnyDesk call "%~dp0Download_AnyDesk.cmd" if exist "%~dp0AnyDesk.exe" del "%~dp0Download_AnyDesk.cmd" ) cls ::Вырубаем службу и процесс anydesk AnyDesk.exe --stop-service taskkill /IM AnyDesk.exe cls echo installation AnyDesk ::Устанавливаем anydesk со значком на рабочем столе start /wait AnyDesk --install "%f%" --silent --create-desktop-icon ::Устанавливаем anydesk без значка на рабочем столе ::start /wait AnyDesk --install "%f%" --start-with-win --silent ::Запускаем службу anydesk "%f%\AnyDesk.exe" --start-service ping 127.0.0.1 -n 5 -w 1000 > nul ::Устанавливаем пароль на anydesk echo %pass% | "%f%\AnyDesk.exe" --set-password ::Получаем ID от этого компьютера for /f "delims=" %%i in ('"%f%\AnyDesk.exe" --get-id') do set CID=%%i ::Создаем скрипт со всеми параметрами для подключения к этому компьютеру (echo @echo off echo mode con lines=2 cols=25 echo cd /d "%%~dp0" echo cls echo echo Downloading AnyDesk echo if not exist "%%~dp0AnyDesk.exe" cscript ^//nologo "%%~f0?.wsf" ^//job:Download echo cls echo echo ID: %CID% echo echo %pass% ^|"%%~dp0AnyDesk.exe" %CID% --with-password echo exit ^/b echo --- Begin wsf script --- Download ---^> echo ^<package^> echo ^<job id="Download"^>^<script language="VBScript"^> echo Set oXMLHTTP = CreateObject^("MSXML2.XMLHTTP"^) echo oXMLHTTP.Open "GET", "https://download.anydesk.com/AnyDesk.exe", 0 echo oXMLHTTP.Send echo Set oADOStream = CreateObject^("ADODB.Stream"^) echo oADOStream.Mode = 3 echo oADOStream.Type = 1 echo oADOStream.Open echo oADOStream.Write oXMLHTTP.responseBody echo oADOStream.SaveToFile "AnyDesk.exe", 2 echo ^<^/script^>^<^/job^> echo ^<^/package^> )> "%~dp0AnyDesk_%computername%.cmd" Как можно сократить часть кода убрав повторяющиеся код
|
Отправлено: 14-Дек-2020 22:46
(спустя 1 час 47 минут)
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3881
- Репутация:127[+] [-]
|
Прикидочно. Думаю, идея понятна.Код@echo off ... >"%~dp0AnyDesk_%computername%.cmd" call :script ... >"%~dp0AnyDesk_%computername%.cmd" call :script 111 ... exit :script echo @echo off echo mode con lines=2 cols=25 echo cd /d "%%~dp0" echo cls echo echo Downloading AnyDesk echo if not exist "%%~dp0AnyDesk.exe" cscript ^//nologo "%%~f0?.wsf" ^//job:Download if .%1 neq . ( echo cls echo echo ID: %CID% echo echo %pass% ^|"%%~dp0AnyDesk.exe" %CID% --with-password ) echo exit ^/b echo --- Begin wsf script --- Download ---^> echo ^<package^> echo ^<job id="Download"^>^<script language="VBScript"^> echo Set oXMLHTTP = CreateObject^("MSXML2.XMLHTTP"^) echo oXMLHTTP.Open "GET", "https://download.anydesk.com/AnyDesk.exe", 0 echo oXMLHTTP.Send echo Set oADOStream = CreateObject^("ADODB.Stream"^) echo oADOStream.Mode = 3 echo oADOStream.Type = 1 echo oADOStream.Open echo oADOStream.Write oXMLHTTP.responseBody echo oADOStream.SaveToFile "AnyDesk.exe", 2 echo ^<^/script^>^<^/job^> echo ^<^/package^> exit /b
|
bios83
- Стаж: 9 лет
- Сообщений: 101
- Репутация:16[+] [-]
|
Ander_73, Большое спасибо
|
Отправлено: 17-Дек-2020 02:23
(спустя 1 день 19 часов)
mat.86
- Стаж: 8 лет 6 месяцев
- Сообщений: 225
- Репутация:1[+] [-]
|
Стоит такая задача. По пути текущего пользователя в папке%APPDATA%\LibreOffice\4\user хранятся настройки Libre office. Как можно эту папку с настройками скопировать всем пользователям? Я сделал sfx архив для распаковки этих настроек в %APPDATA%\LibreOffice\4\user, но это получается только для текущего пользователя. Я могу сделать копирование файла во все подпапки, но это будет только первого уровня. Помогите создать такой скрипт. Список папок можно брать из реестра"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" , только там еще почему то не указана папка встроенного администратора
|
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
mat.86, по идее вот так должно работать:echo off cd /d "%~dp0" for /f "delims=" %%i in ('dir /b "%systemdrive%\Users" ^|findstr /v "defaultuser" ^|find /v "Public"') do ( xcopy /S /E /H /R /Y "user" "%systemdrive%\Users\%%i\AppData\Roaming\LibreOffice\4\user\" ) pause * папка "user" с настройками должна лежать рядом с батником * батник в кодировке OEM 866 (на случай если в путях будет кириллица" * если нужна поддержка xp то придется добавить вариант с другими путями, как определить XP пару сообщений выше есть вариант (правда не помню, есть ли там xcopy) .... если всё-таки надо сначала распаковывать в папку текущего профиля, и копировать оттуда, то можно так:@echo off for /f "tokens=3 delims=\" %%u in ("%UserProfile%") do set current=%%u for /f "delims=" %%i in ('dir /b "%systemdrive%\Users" ^|findstr /v "defaultuser" ^|find /v "Public" ^|find /v "%current%"') do ( xcopy /S /E /H /R /Y "%APPDATA%\LibreOffice\4\user" "%systemdrive%\Users\%%i\AppData\Roaming\LibreOffice\4\user\" ) pause PS: поидее имя пользователя можно было бы получить через %username%, но если имя менялось, то название папки не совпадет (если память не изменяет, при переименовании пользователя, название папки профиля остаётся старым) PPS: или можно содержимое папки "user" упаковать не в sfx, а в обычный архив, докинуть рядом с ним 7z.exe и 7z.dll (взять из установщика или папки 7-zip, x86 для макс.совмести), и батник:@echo off cd /d "%~dp0" for /f "delims=" %%i in ('dir /b "%systemdrive%\Users" ^|findstr /v "defaultuser" ^|find /v "Public"') do ( echo. echo Start extracting to "%%i" profile ... 7z.exe x "user.zip" -o"%systemdrive%\Users\%%i\AppData\Roaming\LibreOffice\4\user\" -y echo. echo Extracting for "%%i" completed. echo. ) pause будет распокавка во все профили включая текущий (кроме defaultuser и allusers), без отдельного копирования
|
dimo70
- Стаж: 7 лет
- Сообщений: 3787
- Репутация:27[+] [-]
- Откуда: BG
|
Привет друзья. Нужен коммандный код для автоматического отправления файла, или контент файла, от компьютера на заданную почту. Можно и через мелкую утилитку тоже.
Последний раз редактировалось: dimo70 (2020-12-17 21:47), всего редактировалось 1 раз _________________ Подпись отключена за нарушение правил форума
|
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3881
- Репутация:127[+] [-]
|
|
Страница 35 из 94
Текущее время: 28-Дек 00:48
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|