Войти

Показать полную графическую версию : Выполнение команд с внешнего устройства


drmodjo
24-09-2013, 00:44
Здравствуйте. Нужен скрипт добавляющий OEM информацию в WIn 8 работающий с внешнего устройства. Написал ниже приведенный пример. С рабочего стола запускается, а с внешнего устройства не хочет. Я в этом деле новичок, поэтому не судите строго. Помогите пожалуйста. Заранее благодарю.

@echo off

copy %~dp0\OEMLogo.bmp C:\Windows\System32\
%~dp0\oeminfo.reg

IgCat
30-09-2013, 19:17
Ну, раз новичок...

1) "@echo off" при отладке лучше временно убрать (или закомментировать) - поможет увидеть процесс и понять причину несработки. А в конце скрипта добавить "pause" - чтобы окно не исчезало сразу.

2) Переменная "%~dp0" дает полный путь родительской папки, включающий _завершающий_слеш_. Поэтому, конструкция вида %~dp0\oeminfo.reg при запуске скрипта из папки "F:\scripts" будет расшифрована командным процессором в F:\scripts\\oeminfo.reg, что закончится ошибкой.

3) Поскольку реальные пути потенциально могут содержать пробелы и пр. экзотику, стоит _всегда_ помещать конструкции, содержащие переменные окружения, в двойные кавычки. Т.е. не

copy %~dp0\OEMLogo.bmp C:\Windows\System32\




copy "%~dp0OEMLogo.bmp" "C:\Windows\System32\"


Ну, и на последок: лучше использовать "%SYSTEMROOT%\System32\" вместо "C:\Windows\System32\". Так оно поуниверсальнее будет...

В целом - держите под рукой файл "ntcmds.chm" из состава WinXP, который незаслуженно утеряли в новых версиях Винды. Удачи.

Iska
30-09-2013, 22:48
Выделение моё:при запуске скрипта из папки "F:\scripts" будет расшифрована командным процессором в
F:\scripts\\oeminfo.reg
, что закончится ошибкой. »
Да ну ;). Молча скопирует.

P.S. По сути же — всё верно.

держите под рукой файл "ntcmds.chm" из состава WinXP, который незаслуженно утеряли в новых версиях Винды. »
Download Windows Command Reference from Official Microsoft Download Center (http://www.microsoft.com/en-us/download/details.aspx?id=2632)

drmodjo
01-10-2013, 11:40
Огромное вам спасибо. Очень подробный и доступный ответ. Я решил объединить все в один файл. Взгляните на скрипт пожалуйста, может в нем тоже есть что оптимизировать. :-)


@echo off

xcopy /h /y "%~dp0OEMLogo.bmp" "%SYSTEMROOT%\System32\"
reg add "hklm\software\Microsoft\Windows\CurrentVersion\OEMInformation" /f /v logo /t reg_sz /d C:\windows\system32\OEMLogo.bmp
reg add "hklm\software\Microsoft\Windows\CurrentVersion\OEMInformation" /f /v Manufacturer /t reg_sz /d "example"
reg add "hklm\software\Microsoft\Windows\CurrentVersion\OEMInformation" /f /v SupportHours /t reg_sz /d "example"
reg add "hklm\software\Microsoft\Windows\CurrentVersion\OEMInformation" /f /v SupportPhone /t reg_sz /d "example"

Iska
01-10-2013, 12:53
Например, так ;):
@echo off
setlocal enableextensions enabledelayedexpansion

set sFileOEMLogo=OEMLogo.bmp
set sKeyPath=HKLM\software\Microsoft\Windows\CurrentVersion\OEMInformation

if exist "%~dp0%sFileOEMLogo%" (
xcopy.exe /h /y "%~dp0%sFileOEMLogo%" "%SystemRoot%\System32\"
) else (
echo Can't find OEM logo file [%sFileOEMLogo%].
)

reg.exe add "%sKeyPath%" /f /v Logo /d "%SystemRoot%\System32\%sFileOEMLogo%"
reg.exe add "%sKeyPath%" /f /v Manufacturer /d "example"
reg.exe add "%sKeyPath%" /f /v SupportHours /d "example"
reg.exe add "%sKeyPath%" /f /v SupportPhone /d "example"

endlocal
exit /b 0

drmodjo
01-10-2013, 20:35
С виду мой вариант поменьше.)))
Могли бы вы, когда у вас будет свободное время описать, чем ваш код лучше. И если можно рядом с каждой командой напишите ее описание в двух словах. Благодарю за понимание.

Iska
01-10-2013, 22:46
Не благодарите, ибо «не могли бы». Вот ежели спросите, что непонятно — отвечу.




© OSzone.net 2001-2012