Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 9

Автор: Free_Soft
Дата сообщения: 26.09.2010 13:03
bomzzz
огромный человеческий пасиб
Автор: bomzzz
Дата сообщения: 26.09.2010 13:05
блин 0 минут пропустил. но не вижу ошибки
Автор: Free_Soft
Дата сообщения: 26.09.2010 13:51
bomzzz
Проблема в том, что когда минут 08 или 09, вываливается ошибка:

Код: Неправильное число. Числовые константы должны быть десятичными (17)
шестнадцатеричными (0x11),или восьмеричными (021).
Автор: bomzzz
Дата сообщения: 26.09.2010 13:53
пробовать надо по всякому, не знаю как сделать
Автор: Free_Soft
Дата сообщения: 26.09.2010 14:00

Цитата:
0 минут пропустил. но не вижу ошибки

где именно пропустил?
Автор: bomzzz
Дата сообщения: 26.09.2010 14:11
на часах - кино сматрел, хотел пасматреть часы переведет, чтоб проверить
Автор: Free_Soft
Дата сообщения: 26.09.2010 14:13
00 минут нормально отрабатывает. проблема только в 08 и 09
Автор: bomzzz
Дата сообщения: 26.09.2010 14:13
ECHO OFF
COLOR 9F
CLS
set a=09
echo %a%
set /a a=%a:~0,1%*10+%a:~-1%
echo %a%
pause

так сделай это работает, но наверняка как то можно проще
Автор: wolf0425
Дата сообщения: 26.09.2010 15:39
не успел

а вообще - из %time% арифметические величины выдираются примерно так:
set /a _min=1%time:~3,2% - 100
или так:
set /a _min=100%time:~3,2% %% 100

как потом при необходимости делать строку с ведущим нулем - писали выше.
Автор: Free_Soft
Дата сообщения: 26.09.2010 17:59
Наконец накропал вот что:

Код: @echo off
set timeA=%time:~0,-6%
set /a min=1%timeA:~3,2% %% 100
set /a hrs=1%timeA:~0,2% %% 100
set /a min=%min%-1
if %min% LSS 0 goto:tm1
:tm2
set min=0%min%
set min=%min:~-2%
goto:endtime
:tm1
set /a min=%min%+60
set /a hrs=%hrs%-1
if %hrs% LSS 0 set hrs=23
set hrs=0%hrs%
set hrs=%hrs:~-2%
goto:tm2
:endtime
set timeB=%hrs%:%min%
echo TimeA %timeA%
echo TimeB %timeB%
pause
Автор: bomzzz
Дата сообщения: 26.09.2010 18:55
(timeA) = 0:00

Добавлено:
так же
set hrs=0%hrs%
set hrs=%hrs:~-2%
Автор: Free_Soft
Дата сообщения: 26.09.2010 19:12
В общем, кажется получилось.
Код, позволяющий получать текущее время в формате hh:mm, минус 1 минута (формат времени независим от системных настроек)

Код: @echo off
echo.>"%temp%\~.ddf"
makecab /d RptFileName="%temp%\~.rpt" /d InfFileName="%temp%\~.inf" -f "%temp%\~.ddf" >nul
for /f "tokens=4,5,6" %%a in ('type "%temp%\~.rpt"') do if not defined tm set "tm=%%c"
set timeA=%tm:~0,-3%
set /a min=1%timeA:~3,2% %% 100
set /a hrs=1%timeA:~0,2% %% 100
set /a min=%min%-1
if %min% LSS 0 goto:tm1
:tm2
set min=0%min%
set min=%min:~-2%
set hrs=0%hrs%
set hrs=%hrs:~-2%
goto:endtime
:tm1
set /a min=%min%+60
set /a hrs=%hrs%-1
if %hrs% LSS 0 set hrs=23
set hrs=0%hrs%
set hrs=%hrs:~-2%
goto:tm2
:endtime
set timeB=%hrs%:%min%
echo TimeA %timeA%
echo TimeB %timeB%
del /q "%temp%\~.*"
pause
Автор: Mark_Titov
Дата сообщения: 26.09.2010 20:46
Помогите пож-ста поправить код проверки номера лицензии винды, не работает -

Код: @Echo Off
SetLocal EnableDelayedExpansion

For /F "Tokens=3" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v DigitalProductId 2^>nul^|Find "REG_BINARY"') Do (
    Set Chars="BCDFGHJKMPQRTVWXY2346789"
    Set DigitalProductId=%%A
    Set DigitalProductId=!DigitalProductId:~104,30!
    For /L %%B In (0, 1, 24) Do (
        Set Var=0
        For /L %%C In (28, -2, 0) Do (
            Call Set /A Var=0x!DigitalProductId:~%%C,2!+!Var!*256
            Set /A BytesBeforeOffset=%%C
            Set /A BytesAfterOffset=%%C+2
            Set /A BytesChanged="(!Var!/24)&255"
            Call :ChangeDigitalProductId "!BytesBeforeOffset!" "!BytesChanged!" "!BytesAfterOffset!"
            Set /A Var=!Var!%%24
        )
        Set /A Num=!Var!+1
        Call Set LicenseKey=%%Chars:~!Num!,1%%!LicenseKey!
    )
)
If Not "!LicenseKey!"=="" (
    Echo !LicenseKey:~0,5!-!LicenseKey:~5,5!-!LicenseKey:~10,5!-!LicenseKey:~15,5!-!LicenseKey:~20,5!
) Else (
    Echo Get registry data error^^!
)
EndLocal
GoTo:EOF

:ChangeDigitalProductId
    Set HexChars=0123456789ABCDEF
    If %~2 LSS 16 (
        Set /A lBytePos=%~2
        Set /A hBytePos=0
    ) Else (
        Set /A lBytePos=%~2%%16
        Set /A hBytePos=%~2/16
    )
    Call Set DigitalProductId=!DigitalProductId:~0,%~1!%%HexChars:~%hBytePos%,1%%%%HexChars:~%lBytePos%,1%%!DigitalProductId:~%~3!
Автор: 01MDM
Дата сообщения: 26.09.2010 20:58
Free_Soft
Еще вариант, здесь на 121 минуту назад:

Код:
@echo off
setlocal

set "min_ago=121"

for /f "tokens=1-3 delims=:," %%i in ("%time: =0%") do (
    
    set /a h=1%%i-100
    set /a m=1%%j-100
    set /a s=1%%k-100

)

set /a h=(%h:0=24%*60+m-min_ago)/60
set /a m=(1440+m-min_ago)%%60

echo %h:24=00%:%m%:%s%
Автор: Free_Soft
Дата сообщения: 26.09.2010 21:07
01MDM
ммм... может и на минуту назад как-то попроще можно?

Добавлено:
да, можно))) блин, весь день парился....

Добавлено:
осталось с нулями разобраться...
Автор: 01MDM
Дата сообщения: 26.09.2010 21:27
Free_Soft

Цитата:
осталось с нулями разобраться...

В смысле? чтоб все было в формате 00:00:00?

Код:
@echo off
setlocal

set "min_ago=121"

for /f "tokens=1-3 delims=:," %%i in ("%time: =0%") do (

set /a h=1%%i-100
set /a m=1%%j-100
set /a s=1%%k-100

)

set /a h=(%h:0=24%*60+m-min_ago)/60
set /a m=(1440+m-min_ago)%%60

set "h=0%h:24=00%"
set "m=0%m%"
set "s=0%s%"

echo %h:~-2%:%m:~-2%:%s:~-2%
Автор: smirnvlad
Дата сообщения: 26.09.2010 21:28
Free_Soft

Цитата:
Код, позволяющий получать текущее время в формате hh:mm, минус 1 минута (формат времени независим от системных настроек)


может так? и с нулями сразу
[more]
Код:
@set @x=0 /*
@echo off

for /f "tokens=1,2 delims= " %%a in ('cscript //nologo /e:jscript "%~f0" "23:59:59"') do set now=%%a && set prev=%%b
echo %now%
echo %prev%

goto:eof */

date = new Date()
WScript.StdOut.WriteLine(date.toTimeString().substr(0,5) +" "+ (new Date(date - 1*1000*60)).toTimeString().substr(0,5))
Автор: 01MDM
Дата сообщения: 26.09.2010 21:33
smirnvlad
Так можно сразу яваскрипт написать
Автор: Nomolos
Дата сообщения: 26.09.2010 21:34
NIKZZZZ, спасибо попробую
Автор: Free_Soft
Дата сообщения: 26.09.2010 21:41
01MDM
То, что надо! Благодарю

Добавлено:
Еще просьба: научите пользоваться скобками

Код: for /f "tokens=3" %%i in ('%REG% QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "ConsentPromptBehaviorAdmin" ^| findstr /i "ConsentPromptBehaviorAdmin"') do set UAC=%%i
for /f "tokens=3" %%l in ('%REG% QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "PromptOnSecureDesktop" ^| findstr /i "PromptOnSecureDesktop"') do set UAC1=%%l
if /i "%UAC%" == "0x2" set UACR=2 & goto:end
if /i "%UAC%" == "0x5" goto:rg
:rg
if /i "%UAC1%" == "0x1" set UACR=5 & goto:end
if /i "%UAC1%" == "0x0" set UACR=3 & goto:end

:end
echo %UACR%
Автор: Beeboba
Дата сообщения: 26.09.2010 23:11
Всем привет! можно на .cmd можно в .vbs - не важно

Задача: скопировать все файлы (*.zip ) из папки А в папку В с переименованием файлов (*.zip) в YYYY_MM_DD_HH_mm(*.zip) ,,,,, и удалять файлы 6-дневной давности из папки В .


пример:

files in folder A copy and rename to folder B
erklerkle.zip --> 2010_09_27_21_30_erklerkle.zip
tutufruti.zip --> 2010_09_27_21_30_tutufruti.zip




будет работать как сервис каждые 10 мин или 30мин

спасибо за внимание!



Автор: Mark_Titov
Дата сообщения: 26.09.2010 23:41
Ребят, очень нужно как-нибуть реализовать батник для редактирования локальной групповой политики на удаленном компе.. Система ХР SP3 Pro, в частности нужно -

gpedit.msc -
Computer Configuration\Administrative Templates\Network\Network Connections\Domain Profile\Windows Firewall: Allow remote administration exception



Это нужно мне для того что бы удаленно делать исключения для брандмауэра (firewall)!
Иначе никак не получается...
Помогите пож-ста...
Благодарю...
Автор: bomzzz
Дата сообщения: 27.09.2010 03:35
Free_Soft
setlocal нужен для того чтоб внутри циклов переменные сразу меняли значения, а не после выхода из цикла (если использовать !). а вообще у сетлокала описание огромное
setlocal /?

Цитата:

ECHO OFF
COLOR 9F
CLS
SET DIRCMD=/B /A:-D
PUSHD
for /f "delims=" %%I in ('DIR') do (
echo %%I
echo %%~zI
echo %%~nI
echo %%~xI
)

ECHO.
POPD
pause



Цитата:

if %errorlevel%==1 (
echo 1
) else (
echo 2
)

if %errorlevel%==1 (echo 1) else echo 2



Добавлено:

Цитата:
ECHO OFF
COLOR 9F
CLS
setlocal enabledelayedexpansion
ECHO OFF> NEWFILE.TXT
FOR /F "EOL= skip=1 delims=*" %%I IN (MYFILE.TXT) DO (
SET NEWSTRING=%%I
ECHO NEW!NEWSTRING:~3!>> NEWFILE.TXT
)
PAUSE
Автор: Mark_Titov
Дата сообщения: 27.09.2010 08:10
Ни кто не может помочь..?
Автор: res2001
Дата сообщения: 27.09.2010 08:19
Mark_Titov

Цитата:
gpedit.msc -
Computer Configuration\Administrative Templates\Network\Network Connections\Domain Profile\Windows Firewall: Allow remote administration exception

Групповые политики - это просто параметры реестра, находи ключ в реестре и меняй так как тебе нужно.
Возможно он лежит где-то тут: HKLM\Software\Policies\Microsoft\
Автор: Mark_Titov
Дата сообщения: 27.09.2010 08:38

Цитата:
Возможно он лежит где-то тут: HKLM\Software\Policies\Microsoft\

Да нету там этого, искал уже...
Автор: res2001
Дата сообщения: 27.09.2010 08:54
Mark_Titov
Файлы описаний групповых политик лежат, по моему, тут: C:\WINDOWS\security\templates\
В этих файлах есть все ключи реестра, которые меняет политика.
Автор: Free_Soft
Дата сообщения: 27.09.2010 11:40
А можно ли из командной строки выполнить команду, чтобы после перезагрузки сразу войти в режим восстановления? (интересует Win7)
Автор: res2001
Дата сообщения: 27.09.2010 12:20
Free_Soft
В безопасный режим?
Тут уже обсуждалась эта тема не так давно.
Пришли к выводу, что только правкой boot.ini
Автор: Free_Soft
Дата сообщения: 27.09.2010 12:23
res2001
ммм... в Win7 его нету вроде. не в безопасный режим, а в режим восстановления. типа F10 при загрузке

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.