Показать полную графическую версию : Выполнение команд с внешнего устройства
Здравствуйте. Нужен скрипт добавляющий OEM информацию в WIn 8 работающий с внешнего устройства. Написал ниже приведенный пример. С рабочего стола запускается, а с внешнего устройства не хочет. Я в этом деле новичок, поэтому не судите строго. Помогите пожалуйста. Заранее благодарю.
@echo off
copy %~dp0\OEMLogo.bmp C:\Windows\System32\
%~dp0\oeminfo.reg
Ну, раз новичок...
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, который незаслуженно утеряли в новых версиях Винды. Удачи.
Выделение моё:при запуске скрипта из папки "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)
Огромное вам спасибо. Очень подробный и доступный ответ. Я решил объединить все в один файл. Взгляните на скрипт пожалуйста, может в нем тоже есть что оптимизировать. :-)
@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"
Например, так ;):
@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
С виду мой вариант поменьше.)))
Могли бы вы, когда у вас будет свободное время описать, чем ваш код лучше. И если можно рядом с каждой командой напишите ее описание в двух словах. Благодарю за понимание.
Не благодарите, ибо «не могли бы». Вот ежели спросите, что непонятно — отвечу.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.