[Quote]

    Gvint64
  • 24573
  • Longevity: 4 years 11 months
  • Posts: 621
  • REPUTATION:72

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

[Quote]

    mat.86
  • 14134
  • Longevity: 8 years 10 months
  • Posts: 225
  • REPUTATION: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. Да запускал от администратора


Last edited by mat.86 on 2020-12-17 03:26; edited 1 time in total

[Quote]

    mat.86
  • 14134
  • Longevity: 8 years 10 months
  • Posts: 225
  • REPUTATION:1

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

[Quote]

    sergeysvirid
  • 104
  • Longevity: 10 years
  • Posts: 2644
  • REPUTATION:127

    [+] [-]
  • Location: 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

[Quote]

    mat.86
  • 14134
  • Longevity: 8 years 10 months
  • Posts: 225
  • REPUTATION:1

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

[Quote]

    Ander_73
  • 15549
  • Longevity: 8 years 2 months
  • Posts: 3983
  • REPUTATION:127

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

[Quote]

    dimo70
  • 17296
  • Longevity: 7 years 4 months
  • Posts: 3795
  • REPUTATION:27

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

_________________
Signed off for violation of forum rules

[Quote]

    mat.86
  • 14134
  • Longevity: 8 years 10 months
  • Posts: 225
  • REPUTATION:1

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

[Quote]

    bios83
  • 2205
  • Longevity: 9 years 4 months
  • Posts: 101
  • REPUTATION: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"
Как можно сократить часть кода убрав повторяющиеся код

[Quote]

    Ander_73
  • 15549
  • Longevity: 8 years 2 months
  • Posts: 3983
  • REPUTATION: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

[Quote]

    bios83
  • 2205
  • Longevity: 9 years 4 months
  • Posts: 101
  • REPUTATION:16

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

[Quote]

    mat.86
  • 14134
  • Longevity: 8 years 10 months
  • Posts: 225
  • REPUTATION:1

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

[Quote]

    cartmenezz
  • 1384
  • Longevity: 9 years 7 months
  • Posts: 527
  • REPUTATION:14

    [+] [-]
  • Location: Калининград
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), без отдельного копирования

[Quote]

    dimo70
  • 17296
  • Longevity: 7 years 4 months
  • Posts: 3795
  • REPUTATION:27

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


Last edited by dimo70 on 2020-12-17 21:47; edited 1 time in total

_________________
Signed off for violation of forum rules

[Quote]

    Ander_73
  • 15549
  • Longevity: 8 years 2 months
  • Posts: 3983
  • REPUTATION:127

    [+] [-]
dimo70, Blat

Page 35 of 94


Display posts:    

Current time is: 28-Apr 07:46

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum