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

    Gvint64
  • 24573
  • Стаж: 4 года 7 месяцев
  • Сообщений: 626
  • Репутация:72

    [+] [-]
mat.86, Скрипт от администратора запускали?

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

    mat.86
  • 14134
  • Стаж: 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 раз

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

    mat.86
  • 14134
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 225
  • Репутация:1

    [+] [-]
Подскажите пожалуйста как реализовать запуск сценария в зависимости от версии операционной системы. Примерно так: определение операционной системы, если windows XP, переход на выполнение сценария1, если не windows XP (все что старше), то переход на выполнение сценария2. Когда то натыкался на пример, сейчас не могу найти

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

    sergeysvirid
  • 104
  • Стаж: 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
  • 14134
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 225
  • Репутация:1

    [+] [-]
sergeysvirid, спасибо большое, все работает ay az

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

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

    [+] [-]
ver| >nul find "5.1."&& goto WinXP|| goto Vista

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

    dimo70
  • 17296
  • Стаж: 7 лет
  • Сообщений: 3787
  • Репутация:27

    [+] [-]
  • Откуда: BG
82025
ver| >nul find "5.1."&& goto WinXP|| goto Vista
ay Мастер!

_________________
Подпись отключена за нарушение правил форума

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

    mat.86
  • 14134
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 225
  • Репутация:1

    [+] [-]
Ander_73, спасибо, тоже работает aa

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

    bios83
  • 2205
  • Стаж: 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"
Как можно сократить часть кода убрав повторяющиеся код

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

    Ander_73
  • 15549
  • Стаж: 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
  • 2205
  • Стаж: 9 лет
  • Сообщений: 101
  • Репутация:16

    [+] [-]
Ander_73, Большое спасибо

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

    mat.86
  • 14134
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 225
  • Репутация:1

    [+] [-]
Стоит такая задача. По пути текущего пользователя в папке
%APPDATA%\LibreOffice\4\user
хранятся настройки Libre office. Как можно эту папку с настройками скопировать всем пользователям? Я сделал sfx архив для распаковки этих настроек в %APPDATA%\LibreOffice\4\user, но это получается только для текущего пользователя. Я могу сделать копирование файла во все подпапки, но это будет только первого уровня. Помогите создать такой скрипт. Список папок можно брать из реестра
"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
, только там еще почему то не указана папка встроенного администратора

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

    cartmenezz
  • 1384
  • Стаж: 9 лет 3 месяца
  • Сообщений: 527
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
mat.86, aa
по идее вот так должно работать:
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
  • 17296
  • Стаж: 7 лет
  • Сообщений: 3787
  • Репутация:27

    [+] [-]
  • Откуда: BG
Привет друзья.
Нужен коммандный код для автоматического отправления файла, или контент файла, от компьютера на заданную почту.
Можно и через мелкую утилитку тоже.


Последний раз редактировалось: dimo70 (2020-12-17 21:47), всего редактировалось 1 раз

_________________
Подпись отключена за нарушение правил форума

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

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

    [+] [-]
dimo70, Blat

Страница 35 из 94


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

Текущее время: 28-Дек 01:05

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


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