cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
Ander_73, Благодарю
|
Отправлено: 12-Дек-2021 18:04
(спустя 1 день 5 часов)
loban_ser
- Стаж: 6 лет 10 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
@echo off SetLocal EnableDelayedExpansion mode con: cols=90 lines=20 color 17 title Enable-Disable reg.exe query "HKU\S-1-5-19" >nul 2>&1 if %errorlevel% equ 1 (goto :UACPrompt) else (goto :Enable-Disable) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~fs0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" exit /b :Enable-Disable cls Echo Доступны следующие интерфейсы: Echo. netsh interface show interface | more +3 | findstr "." | find /n /v "" Echo. set N=0 for /f "skip=2 tokens=3*" %%a in ('netsh interface show interface') do set /a N+=1& set Local!N!=%%b echo Local!N! :check set ID=0 set /p "ID=Введите № интерфейса для отключения: " if %ID% LSS 1 goto :check if %ID% GTR %N% goto :check echo. echo. CHOICE /C 123 /N /M ">(1- Подключить или 2- Отключить 3- Выйти)" if %errorlevel%==1 ( cls echo. Echo Подключаю !Local%ID%!... netsh interface set interface name="!Local%ID%!" admin=ENABLED && timeout /t 3 >nul&goto Enable-Disable ) if %errorlevel%==2 ( cls echo. Echo Отключаю !Local%ID%!... netsh interface set interface name="!Local%ID%!" admin=DISABLED && timeout /t 3 >nul&goto Enable-Disable ) if %errorlevel%==3 goto :EOF Pause >NUL EndLocal Exit /B Добавлено через 31 минута 14 секунд: rezorustavi, сохранить в OEM кодировке
|
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3868
- Репутация:127[+] [-]
|
loban_ser, просто переписывай код. У тебя Find внутри блока () - вот и не понтуйся, а переходи на goto Я тоже всё время хочу красиво, чтоб без переходов. Но жызь жестока...
|
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
Приветствую Возникла необходимость писать текущую дату и время в имя файла, что-то типа "FileName_20211216_183843.ext". Проблема в том, что хочется универсальности, а формат переменных %Date% и %Time% зависит от региональных моментов. Т.е. просто разобрать их в цикле не прокатит. Нашел в интернете парочку способов, вроде как универсальных (к нужному формату не приводил):С помощью WMIC@echo off for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j set ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2%_%ldt:~8,2%-%ldt:~10,2%-%ldt:~12,2% echo Local date is [%ldt%] pause С помощью MAKECAB@echo off pushd "%temp%" makecab /D RptFileName=~.rpt /D InfFileName=~.inf /f nul >nul for /f "tokens=4-7" %%a in ('find /i "makecab"^<~.rpt') do ( set "current-date=%%d-%%a-%%b" set "current-time=%%c" ) del ~.* popd echo %current-date% %current-time% pause На данном этапе мне не хватает опыта, чтобы понять, какой вариант лучше - надёжнее, универсальнее... Нужно что-то максимально просто, чтобы поддерживалось виндой из коробки, хотя бы начиная от 7ки... Чтобы не зависело от всяких Фреймворков и т.п.. и желательно без сторонних утиллит. Склоняюсь варианту с WMIC... или может ещё какие-то есть? PS: как собирается %ldt% с помощью wmic я конечно понял, просто нет уверенности, всегда ли будет идентичный вывод у команды "wmic os get LocalDateTime /VALUE ", нет возможности опробовать на разных системах. На вин10 русской и английской все четко, но как будет на других хз... А так, как я понял, поддержка WMIC вроде как начиная XP имеется... но во всех ли редакциях? я только на Pro версиях пробовал... может в Win7 Home, например, не прокатит...
|
loban_ser
- Стаж: 6 лет 10 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
for /f "tokens=1-3 delims=." %i in ('date /t') do echo %i.%j.%k wmic Path Win32_LocalTime Get Year^,Month^,Day^,Hour^,Minute^,Second /format:(table или list) For /F "tokens=1-6 delims=:., " %A In ("%date% %time%") Do (Echo Date %A.%B.%C Time %D:%E:%F)
Последний раз редактировалось: loban_ser (2021-12-17 20:02), всего редактировалось 3 раз(а)
|
loban_ser
- Стаж: 6 лет 10 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
Лень в XP идти, а так с 7-ки проверено Добавлено через 1 минута 8 секунд: тоже самоеwmic Path Win32_LocalTime Get Year^,Month^,Day^,Hour^,Minute^,Second /format:(table или list) @Echo Off Call :GetVars Echo Year : %Year% Echo Month : %Month% Echo Day : %Day% Echo Hour : %Hour% Echo Minute : %Minute% Echo Second : %Second% Echo DayOfWeek : %DayOfWeek% pause :GetVars 2>nul (For /F "Tokens=1* Delims==" %%i In ('wmic Path Win32_LocalTime Get Day^,DayOfWeek^,Hour^,Minute^,Month^,Quarter^,Second^,WeekInMonth^,Year /format:list') do set "%%i=%%j") exit /b
Последний раз редактировалось: loban_ser (2021-12-17 21:47), всего редактировалось 1 раз
|
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
loban_ser, вижу вы дописали... значит всё-таки wmic надо юзать.. просто никогда не приходилось пользоваться, вот и гложат сомнения, не будет ли проблем в каких-то редакциях в каких-то версия винды? ... пока с телефона, до дома доеду, затестирую, спасибо Добавлено через 1 минута 54 секунды:ещё не успел сравнить) с телефона неособо удобно
|
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
90672Код: @Echo Off Call :GetVars Echo Year : %Year% Echo Month : %Month% Echo Day : %Day% Echo Hour : %Hour% Echo Minute : %Minute% Echo Second : %Second% Echo DayOfWeek : %DayOfWeek% pause :GetVars 2>nul (For /F "Tokens=1* Delims==" %%i In ('wmic Path Win32_LocalTime Get Day^,DayOfWeek^,Hour^,Minute^,Month^,Quarter^,Second^,WeekInMonth^,Year /format:list') do set "%%i=%%j") exit /b Попробовал, все отлично работает, инфы полезной много. Но мне получить ДатуВремя не сама суть, это маленькая часть большого скрипта, и хочется компактности и максимальной простоты. Мне, пожалуй, будет достаточно чего-то типа этого:@echo off for /f "tokens=2 delims==" %%G in ('2^>nul wmic os get localdatetime /value') do set datetime=%%G set "datetime=%datetime:~0,8%_%datetime:~8,6%" echo %datetime% pause Скажите, пожалуйста, команда "wmic os get localdatetime" ничем не устапает команде "'wmic Path Win32_LocalTime" кроме как в информативности и наглядности? И еще вопрос, wmic не требует прав админа? на 10ке у меня с этим проблем не возникло, но всегда ли было так? Добавлено через 38 минут 24 секунды: https://ss64.com/nt/syntax-getdate.html Кстати, 1й вариант отсюда (который через vbs) тоже интересен, работает даже из-под WinPE Вот только я еще секунды хотел. Долго не мог вкурить, как переделать эту строку:wscript.echo ((year(dt)*100 + month(dt))*100 + day(dt))*10000 + hour(dt)*100 + minute(dt) Но вроде дошло, теперь так: GetDate.vbs:Dim dt dt=now 'output format: yyyymmddHHnnss wscript.echo ((year(dt)*100 + month(dt))*100 + day(dt))*1000000 + hour(dt)*10000 + minute(dt)*100 + second(dt) CMD:@Echo off cd /d "%~dp0" For /f %%G in ('cscript /nologo GetDate.vbs') do set _dtm=%%G set _dtm=%_dtm:~0,8%_%_dtm:~8,6% Echo %_dtm% echo. pause
|
loban_ser
- Стаж: 6 лет 10 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
90674ничем не устапает команде "'wmic Path Win32_LocalTime" нет, используйте то, что больше вам подходитfor /f "delims=." %%i in ('wmic.exe OS get LocalDateTime ^| find "."') do set DateTime=%%i echo %DateTime% echo Year: %DateTime:~0,4% echo Month: %DateTime:~4,2% echo Day: %DateTime:~6,2% echo Hours: %DateTime:~8,2% echo Minutes: %DateTime:~10,2% echo Seconds: %DateTime:~12,2% for /f %%# in ('WMIC Path Win32_LocalTime Get /Format:value') do @for /f %%@ in ("%%#") do @set %%@ echo %day% echo %DayOfWeek% echo %hour% echo %minute% echo %month% echo %quarter% echo %second% echo %weekinmonth% echo %year% 90674Кстати, 1й вариант отсюда (который через vbs) тоже интересен, работает даже из-под WinPE Видимо потому, что у вас пешки кастрированные, я всегда добавляю wmi в PE - ВАЖЕН ФУНКЦИОНАЛ, а не размеркогда то даже в XP подключал WMI@Echo off cd /d "%~dp0" md "B:\WbemXP\%1" imagex.exe /mountrw "WbemXP.wim" 1 "B:\WbemXP\%1" if %errorlevel% LEQ 0 GoTo _2 imagex.exe /mount "WbemXP.wim" 1 "B:\WbemXP\%1" if %errorlevel% NEQ 1 GoTo _2 goto :eof :_2 >"B:\UnMountWbem.cmd" echo @Echo off >>"B:\UnMountWbem.cmd" echo imagex.exe /unmount "B:\WbemXP\%1" >>"B:\UnMountWbem.cmd" echo "%SystemRoot%\System32\unlocker.exe" "B:\WbemXP\%1" /S >>"B:\UnMountWbem.cmd" echo If Exist X:\i386\System32\Wbem "X:\i386\System32\unlocker.exe" X:\i386\System32\Wbem /S >>"B:\UnMountWbem.cmd" echo rd /s /q "B:\WbemXP" >>"B:\UnMountWbem.cmd" echo If Exist %SystemRoot%\System32\Wbem rd /s /q %SystemRoot%\System32\Wbem >>"B:\UnMountWbem.cmd" echo del /f /q %%0 ^& exit xcopy /chersky "B:\WbemXP" %SystemRoot%\System32\ If Exist %SystemRoot%\System32\Wbem goto:registr Call %SystemRoot%\System32\regWbem.cmd goto eof :registr If Exist %SystemRoot%\System32\regWbem.cmd del /q /f %SystemRoot%\System32\regWbem.cmd >%SystemRoot%\System32\regWbem.cmd echo @Echo off >>%SystemRoot%\System32\regWbem.cmd echo set count=0 >>%SystemRoot%\System32\regWbem.cmd echo start Wbusy.exe "Installing WMI services..." /marquee >>%SystemRoot%\System32\regWbem.cmd Echo :loop >>%SystemRoot%\System32\regWbem.cmd echo set /a count+=1 >>%SystemRoot%\System32\regWbem.cmd Echo sc config winmgmt start= disabled >>%SystemRoot%\System32\regWbem.cmd Echo net stop winmgmt >>%SystemRoot%\System32\regWbem.cmd Echo cd %windir%\system32\wbem >>%SystemRoot%\System32\regWbem.cmd Echo start /b /w winmgmt /kill >>%SystemRoot%\System32\regWbem.cmd Echo start /b /w winmgmt /unregserver >>%SystemRoot%\System32\regWbem.cmd Echo start /b /w winmgmt /regserver >>%SystemRoot%\System32\regWbem.cmd Echo start /b /w winmgmt /resyncperf >>%SystemRoot%\System32\regWbem.cmd Echo if exist Repos_bakup rd Repos_bakup /s /q >>%SystemRoot%\System32\regWbem.cmd Echo rename Repository Repos_bakup >>%SystemRoot%\System32\regWbem.cmd Echo regsvr32 /s %systemroot%\system32\scecli.dll >>%SystemRoot%\System32\regWbem.cmd Echo regsvr32 /s %systemroot%\system32\userenv.dll >>%SystemRoot%\System32\regWbem.cmd Echo for /f %%%%s in ('dir /b *.dll') do start /b /w regsvr32 /s %%%%s >>%SystemRoot%\System32\regWbem.cmd Echo for /f %%%%s in ('dir /b *.mof') do start /b /w mofcomp %%%%s >>%SystemRoot%\System32\regWbem.cmd Echo for /f %%%%s in ('dir /b *.mfl') do start /b /w mofcomp %%%%s >>%SystemRoot%\System32\regWbem.cmd Echo sc config winmgmt start= auto >>%SystemRoot%\System32\regWbem.cmd Echo net start winmgmt >>%SystemRoot%\System32\regWbem.cmd Echo start /b /w wmiprvse /regserver >>%SystemRoot%\System32\regWbem.cmd echo If %%count%% LEQ 1 goto:loop >>%SystemRoot%\System32\regWbem.cmd Echo Wbusy.exe "Installing WMI services..." /stop >>%SystemRoot%\System32\regWbem.cmd Echo For /f "usebackq delims=" %%%%a IN (`dir /b /s "%USERPROFILE%\Установка WMI.lnk"`) do Del /f /q "%%%%a" >>%SystemRoot%\System32\regWbem.cmd echo del /f /q %%0 ^& exit Exit /B
|
Отправлено: 18-Дек-2021 11:00
(спустя 2 часа 17 минут)
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
90676нет, используйте то, что больше вам подходит понял90676потому, что у вас пешки кастрированные ну да, использую облегченные ядра от Xemom1, мне как правило они нужны лишь для установки винды, редко для каких-то "ремонтных" дел (для этого пользуюсь 2k10 в основном).. а про wmi, стыдно признаться, как-то и не слыхивал... я не из сферы IT, этим зверем пока не пользовался (по крайней мере осознанно).. возможно стоит ознакомиться, подозреваю через wmic можно ещё много чего полезного делать)) (пока только краем глаза заглянул в справку, но уже кое-что взял на примету) ещё раз спасибо
|
loban_ser
- Стаж: 6 лет 10 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
я вообще слесарь Добавлено через 1 час 25 минут 38 секунд: можно удалять приложения (программы) управлять реестром и есЧо мого чегоwmic path Win32_Processor get AddressWidth |>nul find "32" && set xOS=x86 ||set xOS=x64 определить разрядность ОС, работает от ХР до ....... скачайте WMICodeCreator и попробуйте, может понравится wmi а так переношу файл подкачки на другой дискWMIC.exe ComputerSystem WHERE Name="%ComputerName%" SET AutoManagedPageFile=FALSE >nul 2>&1 WMIC PAGEFILESET DELETE >nul 2>&1 WMIC PAGEFILESET CREATE Name='%disk%:\pagefile.sys', Description='pagefile.sys @ %disk%:\', SettingID='pagefile.sys @ %disk%:' >nul 2>&1 WMIC PAGEFILESET SET InitialSize=%size%, MaximumSize=%size% >nul 2>&1
|
Страница 67 из 94
Текущее время: 25-Дек 05:49
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|