ты пишешь что создаешь их путем использования редакторов.
я себе в контексное меню сделал-мышкой клацнул и готов,уже с заготовкой кода.
не знаю полезно ли это другим,но могу дать.
@echo off
Chcp 866 >nul
title Пункт меню "Создать..."
echo @echo off>%~dp0new.bat
echo Chcp 866 >nul >>%~dp0new.bat
echo title >>%~dp0new.bat
echo.>>%~dp0new.bat
echo.>>%~dp0new.bat
echo pause>>%~dp0new.bat
copy /y %~dp0new.bat %systemdrive%\Windows\ShellNew
reg.exe add "HKCR\.bat\ShellNew" /ve /f
reg.exe add "HKCR\.bat\ShellNew" /v FileName /d New.bat /f
del /q %~dp0new.bat
pause
reg.exe add "HKCR\.bat\ShellNew" /ve /f
reg.exe add "HKCR\.bat\ShellNew" /v FileName /d New.bat /f
@echo off
Chcp 866 >nul
title Пункт меню "Создать..."
(
echo @echo off
echo SetLocal EnableExtensions EnableDelayedEpansion
echo Chcp 866 ^>nul
echo title Заголовк
echo cd /d "%~dp0"
echo.
echo.
echo.
echo pause
echo exit /B
) > "%~dp0new.bat"
copy /y "%~dp0new.bat" %systemdrive%\Windows\ShellNew
reg.exe add "HKCR\.bat\ShellNew" /ve /f
reg.exe add "HKCR\.bat\ShellNew" /v FileName /d New.bat /f
del /q "%~dp0new.bat"
pause
это я не понял,каким образом он себе это снесе т?cd "%~dp0"
нужно, чтобы узер не снес себе что-нибудь при запуске скрипта от админа.
кракозябрики тогда будут)))Лично я не вижу смысле chcp 866, она и так идет по-умолчанию.
За всю историю в начале батника никогда не приходилось ее использовать.
Да.А запись в HKCR по-моему требует повышенных прав?
reg.exe add "HKCR\.bat\ShellNew" /ve /f|| call elevate...
del *
(
echo @echo off
echo SetLocal EnableExtensions EnableDelayedEpansion
echo Chcp 866 ^>nul
echo title Заголовк
echo cd /d "%~dp0"
echo.
echo.
echo.
echo pause
echo exit /B
) > "%~dp0new.bat"
тогда уж что-то одно, либо проверка в лоб, либо анализ сис. версион,reg ... || call elevate
и SystemVersion
call :GetSystemVersion "OSVer" "Core" "Build" "Family" "EnvironCore"
if "%Family%"=="Vista" call :elevate
Так ты хочешь, чтобы открывать батник сразу в блокноте и ним же редактировать...кракозябрики тогда будут)))
если вдруг кодировка другая.
ага,точно.тогда уж что-то одно, либо проверка в лоб, либо анализ сис. версион,
а конкретно:
ну у меня например нотпад++ и там по умолчанию 866,думаю у многих кто скриптами балуется так примерно тоже.Так ты хочешь, чтобы открывать батник сразу в блокноте и ним же редактировать...
:: Не отображать на экране консоли исполняемые команды, а только их результат
@echo off
:: SetLocal - Локализовать все новые/изменяемые переменные в пределах этого батника
:: EnableExtensions - включить поддержку дополнительных ключей (например, FOR /F, Chdir /D и пр...)
:: если эта опция была отключена в реестре.
:: EnableDelayedEpansion - возможность использовать знаки восклицания (!) для раскрытия актуального значения переменной
:: под скобками, в блоках команд, циклах.
SetLocal EnableExtensions EnableDelayedEpansion
:: это не знаю зачем (перейти в кодовую страницу 866. По-умолчанию в консоли всегда 866)
Chcp 866 >nul
:: Заголовок окна консоли
title Заголовк
:: Изменить рабочий каталог на каталог, из которого запускается батник
cd /d "%~dp0"
:: Не закрывать консоль, ожидать нажатия любой клавиши
pause
:: Завершить выполнение батника в этом месте
:: (на случай, если юзер добавит после шаблона новые подпрограммы/функции)
exit /B
вот не пойму я)))):: Изменить рабочий каталог на каталог, из которого запускается батник
cd /d "%~dp0"
:: Изменить рабочий каталог на каталог, из которого запускается батник
cd /d "%~dp0"
так бывает и не так))):: это не знаю зачем (перейти в кодовую страницу 866. По-умолчанию в консоли всегда 866)
@echo off
SetLocal EnableExtensions
call :GetSystemVersion "OSVer" "Core" "Build" "Family" "EnvironCore"
if "%Family%"=="Vista" if "%1" neq "Admin" call :elevate
chdir /d "%~dp0"
::
:: <--- Здесь код установщика контекстного меню
::
pause
exit /B
:Elevate
Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"Admin","","runas",1 >"%~dp0Elevating.vbs"
cscript.exe //nologo "%~dp0Elevating.vbs" "%~dpnx0"
del "%~dp0Elevating.vbs"
Exit
:GetSystemVersion [OSVersion] [OSCore] [OSBuild] [OSFamily] [EnvironmentCore]
Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x32
set %~5=x32& if "%xOS%"=="x64" echo "%PROGRAMFILES%" |>nul find "x86" || set %~5=x64
set "%~2=%xOS%"
set _key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "CurrentBuildNumber"^|Find "CurrentBuildNumber"') do set "%~3=%%~b"
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "CurrentVersion"^|Find "CurrentVersion"') do set "_ver=%%~b"
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "ProductName"^|Find "ProductName"') do set "%~1=%%~b"
if "%_ver:~0,1%"=="6" (set "%~4=Vista") else (set "%~4=NT")
Exit /B
В каждом. Мне так более сейфово.а для чего его изменять если не в основном скрипте?
Ты в каждый батник так вписываешь что ли?
Вчера случайно запустил ComboFix уже убедился в этомтак бывает и не так)))Dragokas написал(а)::: это не знаю зачем (перейти в кодовую страницу 866. По-умолчанию в консоли всегда 866)
А,вот теперь понятно.В каждом. Мне так более сейфово.
К тому же после этой команды можешь у себя везде поубирать приставки к путям вида %~dp0, так как ты гарантированно уже находишься именно в каталоге с батником.
echo изменения вступят в силу после перезагрузки,появится новый пункт.
echo Выполнить перезагрузку компьютера сейчас?
Как?сейчас попробую в какой кодировке пересохранит файл стандартный блокнот.
солидарен.но я не представляю в ней полезности.
если надумаешь-сделаем)))Моя новая хотелка
Да ладно. Из разряда выполнимой "фантастики". + отошел от темы.
Все что нужно - это перехват глагола "Изменить".
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?