Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Тест-форум (http://forum.oszone.net/forumdisplay.php?f=26)
-   -   ряд простых задач (http://forum.oszone.net/showthread.php?t=245282)

элькхар 23-10-2012 10:18 2010593

ряд простых задач
 
Здравствуйте.
Недавно начал изучать bat и все время косячу в коде
1 задача
необходимо сделать свой таймер
мой код
-------------------------------------------------------
@echo off
setlocal enabledelayedexpansion
if "%1"=="/?" goto 2
for /f "delims=:. tokens=1-3" %%i in ("%time%") do (
set h0=%%i
set m0=%%j
set s0=%%k
)
set h0=%%i*3600
set m0=%%j*60
set /a s0=%h0%+%m0%+%s0%
:1
for /f "delims=:. tokens=1-3" %%i in ("%time%") do (
set h1=%%i
set m1=%%j
set s1=%%k
)
set h1=%%i*3600
set m1=%%j*60
set /a s1=%h1%+%m1%+%s1%
set /a diff=s1-s0

if %1 lss %diff% goto eof

goto 1

:2
echo %~nx0 seconds


:eof
endlocal
-----------------------------------------------------------
но это не работает на числах 08 и 09 (восьмеричная система) попытался исправить так
--------------------------------------------------------
@echo off
setlocal enabledelayedexpansion
if "%1"=="/?" goto help
for /f "delims=:., tokens=1-3" %%i in ("%time%") do (
set H0=%%i
if %H0%==08 set H0=8
if %H0%==09 set H0=9
set M0=%%j
if %M0%==08 set M0=8
if %M0%==09 set M0=9
set S0=%%k
if %S0%==08 set S0=8
if %S0%==09 set S0=9
)
set H0=!H0!*3600
set M0=!M0!*60
set /a S0=!S0!+!M0!+!H0!
:1
for /f "delims=:., tokens=1-3" %%i in ("%time%") do (
set H1=%%i
if %H1%==08 set H1=8
if %H1%==09 set H1=9
set M1=%%j
if %M1%==08 set M1=8
if %M1%==09 set M1=9
set S1=%%k
if %S1%==08 set S1=8
if %S1%==09 set S1=9
)
set H1=!H1!*3600
set M1=!M1!*60
set /a S1=!H1!+!M1!+!S1!
set /a dif=!S1!-!S0!
if %1 lss %dif% goto eof
goto 1

:help
echo %~nx0 seconds

:eof
endlocal
------------------------------------------------------------------------
пишет непредвиденное появление =8

ну и 3 альтернатива хоть и не удовлетворяет заданным нам условиям( в универе)
--------------------------------------------
@echo off
setlocal enabledelayedexpansion
if "%1"=="/?" goto help
set h1=%%1
set /a h1=h1*100
:p
ping -n 1 -w !h1! 192.168.254.254 >nul
echo 1
goto eof
:help
echo %~nx0 seconds
:eof
endlocal
-------------------------------------------------
тоже отказывается работать


2 задача
Написать программу, показывающую, какой файл выполнится, если набрать команду, переданную в параметрах.

Должны поддерживаться как команды с расширением, так и без (т.е. calc и calc.exe)

Пример запуска:
>which.cmd calc
C:\Windows\system32\calc.exe
Не представляю как это реализовать нашел что то про reg, но все попытки закочились неудачей

3 и последний вопрос может расскажите как это работает
--------------------
@echo off
md helpgen
cd helpgen
for /f %%i in ('help ^| findstr /r /c:"^[A-Z][A-Z]* "') do help %%i>%%i.txt
-------------------------
а именно зачем нужны 2 скобки a-z a-z и *

Petya V4sechkin 23-10-2012 10:41 2010610

Цитата:

Цитата элькхар
ряд простых задач

Для каждой задачи - отдельная тема. С осмысленным названием.
Основные принципы размещения и поиска информации на конференции OSzone.net
Цитата:

темы организуются по принципу "одна проблема - одна тема"


Время: 22:59.

Время: 22:59.
© OSzone.net 2001-