[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, Благодарю aa

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 2 месяца
  • Сообщений: 578
  • Репутация:24

    [+] [-]
90472Попробуйте:
@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 кодировке

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 2 месяца
  • Сообщений: 578
  • Репутация:24

    [+] [-]
Ander_73,
Приветствую! aa
Можешь помочь только ты, что-то у меня видимо мозгов не хватает ah
Есть кусок кода
for %%c in (lnk) do for /f "delims=" %%a in ('Tools\wimlib-imagex.exe dir "%Source%" %SourceNumber% ^| findstr /r /c:"\.%%c$"') do (echo %%~a >>$Tmp$\Source.txt)
echo.
for %%c in (lnk) do for /f "delims=" %%a in ('Tools\wimlib-imagex.exe dir "%PeWim%" %PeNumber% ^| findstr /r /c:"\.*\.%%c$"') do call :Check "%%a"
:Check
    set "put=WinPe\Add_F%~p1"
    set "put=%put:~,-1%"
  >nul Find /i "%~1" "$Tmp$\Pe.txt" || (
  echo.|set /p "x=*"
  >>$Tmp$\PeNot.txt echo %~1
  >nul Find /i "%~1" "$Tmp$\Source.txt" && (
    2>nul md "%put%"
    >nul Tools\wimlib-imagex.exe extract "%Source%" %SourceNumber% "%~1" --dest-dir "%put%"
    echo.|set /p "x=%bs%"
    set "bs="
    echo.
    echo Found %~p1%~nx1
    set /a i+=1
  ) || (
  >nul find /i "%~p1%~nx1" "$Tmp$\PeWinRe.txt" && (
    2>nul md "%put%"
    >nul Tools\wimlib-imagex.exe extract "%PeWinRe%" 1 "%~1" --dest-dir "%put%"
    echo.|set /p "x=%bs%"
    set "bs="
    echo.
    echo Found %~p1%~nx1
    set /a i+=1
  )
)
)
    set "put="
goto :eof
так вот он сразу же обрывается на команде Find /i "%~1" "$Tmp$\Pe.txt"
ошибка в том, что если в переменной присутстуют скобки, к примеру =>> \Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Drivers_PE\Install_drv(7z,Cab,Wim).lnk
то на этом и обрывается все ak
помоги решить bc

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3609
  • Репутация:127

    [+] [-]
loban_ser, просто переписывай код. У тебя Find внутри блока () - вот и не понтуйся, а переходи на goto ae
Я тоже всё время хочу красиво, чтоб без переходов. Но жызь жестока...

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 2 месяца
  • Сообщений: 578
  • Репутация:24

    [+] [-]
bc

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
90562
rezorustavi,
сохранить в OEM кодировке
aa ay

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Приветствую aa
Возникла необходимость писать текущую дату и время в имя файла, что-то типа "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
  • 17796
  • Стаж: 6 лет 2 месяца
  • Сообщений: 578
  • Репутация: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 раз(а)

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
loban_ser, aa к сожалению не вариант... из-за региональных особенностей, у команды разный вывод в разной винде
Добавлено через 6 минут 9 секунд:
ещё вот наткнулся - https://ss64.com/nt/syntax-getdate.html
правда напрягает этот момент:
This works under Windows 10 independent of the short date format / Operating System Language/ Locale.
т.е. вроде как то что нужно, но почему только про Win10 речь, как на других системах - непонятно... и возможности проверить нет.
нужен вариант без изъяна, надёжный как пружина от дивана! ))

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 2 месяца
  • Сообщений: 578
  • Репутация:24

    [+] [-]
Лень в XP идти, а так с 7-ки проверено
Добавлено через 1 минута 8 секунд:
90671ещё вот наткнулся - https://ss64.com/nt/syntax-getdate.html
тоже самое
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
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
loban_ser, вижу вы дописали... значит всё-таки wmic надо юзать.. просто никогда не приходилось пользоваться, вот и гложат сомнения, не будет ли проблем в каких-то редакциях в каких-то версия винды?
...
пока с телефона, до дома доеду, затестирую, спасибо
Добавлено через 1 минута 54 секунды:
90672тоже самое
ещё не успел сравнить) с телефона неособо удобно

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация: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
  • 17796
  • Стаж: 6 лет 2 месяца
  • Сообщений: 578
  • Репутация: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

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
90676нет, используйте то, что больше вам подходит
понял
90676потому, что у вас пешки кастрированные
ну да, использую облегченные ядра от Xemom1, мне как правило они нужны лишь для установки винды, редко для каких-то "ремонтных" дел (для этого пользуюсь 2k10 в основном)..
а про wmi, стыдно признаться, как-то и не слыхивал... я не из сферы IT, этим зверем пока не пользовался (по крайней мере осознанно).. возможно стоит ознакомиться, подозреваю через wmic можно ещё много чего полезного делать))
(пока только краем глаза заглянул в справку, но уже кое-что взял на примету)
ещё раз спасибо az

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 2 месяца
  • Сообщений: 578
  • Репутация:24

    [+] [-]
90681я не из сферы IT
я вообще слесарь al
ag

Добавлено через 1 час 25 минут 38 секунд:
90681а про wmi
можно удалять приложения (программы) управлять реестром и есЧо мого чего
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 из 89


Показать сообщения:    

Текущее время: 26-Апр 08:58

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы