ComradG
![](http://forum.ru-board.com/board/avatars/BoneDragon.gif)
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Все-таки хочется вернуться к теме времени еще раз и разжевать что к чему. time и date имеют фиксированное значение формата H:M:S и D:M:Y, которые не зависят от локали - наличие инвариантной культуры Microsoft для этих тулз не предусмотрела, так что давайте прекратим дискуссии на тему Цитата: что значит set time=%time:~0,2%:%time:~3,2%:%time:~-5,2% | и с чем его едят. Вас никто не заставляет использовать именно эту конструкцию, тем более, что время можно обработать и с помощью for: Код: for /f "tokens="1,2,3 delims=:" %%i in ('time /t') do ( set hour=%%i set mint=%%j set secs=%%k ) | Тут у кого как фантазия работает. Лично я проверял все это как на осях с буржуйской локалью, так и на русской (которую, к слову, в Германии сложно было достать ) На счет того, безопасно ли переопределять time как-таковую, отвечу - нет. Лучше использовать переменную с другим именем. В противном случае, это может вылиться в конфликт переменных, в худшем случае - переполнении командного буфера (бывает и такое). Теперь о справках. wolf0425 Имелась ввиду не присловутая hh ntcmds.chm, а манны по устройству командного интерпретатора от Рихтера. Они правда на английском, но ты, как я понимаю, гутаришь и на оном. Уфф! Ну, теперь можно и об остальном. Кто сказал, что деинсталлировать приложение для консольщика проблематично? Неправда. Если речь идет о приложениях установленных в систему через MSI, то можно воспользоваться услугами wmic: Код: wmic product where name="имя_программы" call uninstall | Или же написать батник. Вот пример того, как можно удалить Opera из системы: Код: @echo off setlocal for /f "tokens=7 delims=\" %%i in ('reg query hklm\software\microsoft\windows\currentversion\^ uninstall ^| findstr /i {') do ( for /f "tokens=3,*" %%j in ('reg query hklm\software\microsoft\windows\currentversion\^ uninstall\%%i /v DisplayName ^| findstr /i opera') do ( msiexec /promptrestart /qb /x %%i /l+*v "%userprofile%\┐RЁ ¤RЄг┐_-вл\opera.log" if %errorlevel% eql 1 ( echo Operation failed. See log for details. ) else ( echo Opera was successfuly removed. ) ) ) endlocal exit /b | Батник, который я написал, более гибок в плане того, что если приложение устанавливалось, скажем посредством какого-либо скриптового инсталлятора, то из значений реестра можно извлечь путь до деинсталлятора и инициировать его запуск. А вот wmic, во-первых, требует прав администратора, во-вторых, пока только и умеет, что работать с пакетами MSI. Если кому пригодится - скрипт, демонстрирующий как можно узнать использующихся в системе утилит Sysinternals: Код: @echo off setlocal set search=reg query hkcu\software\sysinternals 2>nul %search% > nul if %errorlevel%==1 ( echo No one Sysinternals tool was installed. goto:eof ) else ( goto:action ) :action set /p action="Show list of installed Sysinternals tools? [y/n] " if /i %action%==y ( for /f "skip=1 tokens=4 delims=\" %%i in ('reg query hkcu\software\sysinternals') do ( echo %%i ) goto:eof ) else if /i %action%==n ( echo List not build because user skip this option. goto:eof ) endlocal exit /b | Сразу отмечу, что скрипт несовершенен хотя бы потому, что оперируюет данными реестра, а не ищет тулзы непосредственно на диске (можно ли такое вообще провернуть без vbs-ки?). И также есть фича: contig, если мне не изменяет память в реестре пишет только букву C (вместо contig), поэтому скрипт должен быть немного обработан напильником. Ну а если кому надо, то могу скинуть vbs или написать батник, который бы создавал оную и запускал на выполнение. |