Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd) 2

Автор: Elroir
Дата сообщения: 28.07.2008 11:07
renreg

Код:
start "" "MOYA PROGRAMMA.exe"
Автор: Svjt
Дата сообщения: 28.07.2008 11:25
renreg
Либо вариант Elroir, либо, если тебе нада точно отследить конец работы "MOYA PROGRAMMA.exe" (допустим после неё должно что-то ещё делать то вот так (по крайней мере сам так делаю):



Код:
elay
pause 1000
tasklist > Task.log
find "MOYA PROGRAMMA.exe" Task.log
if %errorlevel%==0 goto delay
Автор: AnryEkb
Дата сообщения: 28.07.2008 11:40
Уважаемые Гуру, подскажите пожалуйста.

Есть задача, незаметно запустить с загрузкой винды скайп, чтоб не светился ни своим окном, ни треем. Просто тихо сидел в процессах и не раздражал собой пользователя.
Есть куча прог которые прячут окно и значек трея по нажатии комбинации клавиш, но не в момент загрузки!!!
Уважаемые подскажите можно ли решить данную проблему одним батником, если нет, может быть есть возможность сделать такой bat файл чтобы загружал скайп и по истечении какого то времени эмулировал нажатие комбинации клавиш, чтоб уже другая прога их подхватила и прятала его.

Заранее благодарю.
Автор: vmix
Дата сообщения: 29.07.2008 18:18
vmix

Цитата:
Задача:
Логировать вкл/откл компов в сети

..пришлось делать самому, вот что получилось:


Код:
:: Ping hosts by list and write changelog.. @vmix
    @echo off
    setlocal EnableDelayedExpansion
    set SLEEP=60
    set PH1=0
    set PH2=0
    if not exist hosts.txt goto:SYNTAX
    echo PingLogging.. (press Ctrl-C for exit)
    echo Hosts start state.. >pinglog.log

    for /f "tokens=1" %%A in (hosts.txt) do (
    set HOST=%%A
    ping !HOST! | find /i "TTL">nul
    if errorlevel 1 (call:HP0) else (call:HP1)
    )
    echo Changelog.. >>pinglog.log

    :PH
    ping -n %SLEEP% 127.0.0.1 >nul
    for /f "tokens=*" %%A in (hosts.txt) do (
    set HOST=%%A
    for /f "tokens=*" %%B in (pinglog.log) do for /f "tokens=*" %%C in ('echo %%B ^| find /i "%%A"') do set CH=%%C
    echo !CH! | find /i "down">nul
    if not errorlevel 1 (set PH1=0) else (set PH1=1)
    echo !CH! | find /i "up">nul
    if not errorlevel 1 (set PH1=1) else (set PH1=0)
    ping !HOST! | find /i "TTL">nul
    if errorlevel 1 (set PH2=0) else (set PH2=1)
    set /a PH=!PH2!-!PH1!
    if !PH! GTR 0 call:HP1
    if !PH! LSS 0 call:HP0
    )
    goto:PH

    :HP0
    echo %DATE:~-10% %TIME:~,8%    down    %HOST% >>pinglog.log
    goto:EOF

    :HP1
    echo %DATE:~-10% %TIME:~,8%    up    %HOST% >>pinglog.log
    goto:EOF

    :SYNTAX
    echo 1.1.1.1 >hosts.txt
    echo.
    echo Please edit file named "hosts.txt" with IP addresses of your computers..
    echo.
    pause
Автор: RMR
Дата сообщения: 31.07.2008 09:24
А можно ли запустить из батника программу так, чтобы path был как у программы, а не откуда запускается батник.
Автор: Daul
Дата сообщения: 31.07.2008 12:38
Перед запуском программы перейти в нужную папку: cd "путь к программе"
Автор: RMR
Дата сообщения: 31.07.2008 13:44
Daul Спасибо!
А можно ли обработать ошибку "метка не найдена" при goto несуществующая_метка?
Автор: bornbill
Дата сообщения: 31.07.2008 14:19
народ нужно создать каталог с текущим временем(часы минуты секунды) формат не принципиален.... заранее благодарен.
Автор: RMR
Дата сообщения: 31.07.2008 14:21
Уже не надо вообщем.
Сделал switch. Напишите если знаете лучший способ.

Код: @echo off
title Switch
:start
set num=
echo 1: Посмотреть имя компьютера
echo 2: Посмотреть количество процессоров
echo 3: Посмотреть OS
echo 4: Посмотреть IP
echo 5: Выход
set /p "num=Введите номер: "
call :switch %num%
echo.
call :return
:1
echo Имя компьютера: %COMPUTERNAME%
pause
call :return
:2
echo Количество процессоров: %NUMBER_OF_PROCESSORS%
pause
call :return
:3
echo OS: %OS%
pause
call :return
:4
for /F "tokens=2 delims=:" %%A in ('ipconfig ^| find "IP"') do (for %%B in (%%A) do set IP=%%B)
echo Ваш IP: %IP%
pause
call :return
:5
exit

:switch
goto %~1

:return
cls
goto start
Автор: bornbill
Дата сообщения: 31.07.2008 14:22
или по русски как убрать : все из переменной заранее благодарен
Автор: RMR
Дата сообщения: 31.07.2008 14:43
bornbill echo %time::=-%
Автор: bornbill
Дата сообщения: 31.07.2008 14:56
RMR
а запятые в том же выражении?
Автор: citav
Дата сообщения: 31.07.2008 14:58
All

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

Подскажите как в батнике сделать,чтоб запустить от имени локального админа первый файл,дождаться его выполнения и далее запустить второй файл с правами админа,дождаться его выполнения и далее третий....

Спасибо за помощь,а то искать не дают-ставь ручками,говорят,а учится потом будешь....
Автор: RMR
Дата сообщения: 31.07.2008 15:12
bornbill

1ый вариант (часы минуты секунды)
set tm=%time:~0,8%
set tm=%tm::=.%
echo %tm%

2ой вариант (часы минуты секунды)
for /F "tokens=1,2,3 delims=:, " %%i in ("%time%") do (set hour=%%i) & (set min=%%j) & (set sec=%%k)
echo %hour%-%min%.%sec%

Добавлено:
А можно ли записать батником в файл echo "%~1" чтобы "%~1" не превратился в %1 батника.
Автор: Elroir
Дата сообщения: 31.07.2008 18:02
RMR

Цитата:
А можно ли записать батником в файл echo "%~1" чтобы "%~1" не превратился в %1 батника

Удвой знак процента.
Автор: RMR
Дата сообщения: 31.07.2008 20:11
Elroir Спасибо.
А как правильно сделать set var=%var:*=%
Автор: Elroir
Дата сообщения: 31.07.2008 20:44
RMR

Цитата:
А как правильно сделать set var=%var:*=%

Смотря что ты хочешь сделать. Сформулируй вопрос по другому.
Автор: RMR
Дата сообщения: 31.07.2008 21:07
Убрать все * из переменной.
Автор: Elroir
Дата сообщения: 31.07.2008 21:35
RMR

Код:
@echo off
setlocal
set "a=asd**asdfa *cdf*"
echo a = %a%
set "temp_a=%a%"
set "a="
call :replace_star "%temp_a%"
echo a = %a%
goto :EOF
:replace_star
if "%~1"=="" goto :EOF
set "temp_a=%~1"
if not "%temp_a:~0,1%"=="*" (set "a=%a%%temp_a:~0,1%")
call :replace_star "%temp_a:~1%"
Автор: RMR
Дата сообщения: 31.07.2008 22:25
Elroir Спасибо. Думал есть более простой метод.
Автор: alexvsm
Дата сообщения: 01.08.2008 08:12
RMR

Цитата:
А можно ли записать батником в файл echo "%~1" чтобы "%~1" не превратился в %1 батника.


Код: echo echo ^"%%^~^1^"
Автор: RMR
Дата сообщения: 01.08.2008 14:35
alexvsm Просто удвоение процента тоже работает.
Автор: KapralBel
Дата сообщения: 01.08.2008 15:19
RMR

Код: Echo ^"%%^~^1^">2
Автор: vitrzn
Дата сообщения: 01.08.2008 21:11
Ув. гуру, помогите новичку ("bat_анику")

Нужен батник, чтобы делал так:
Есть файлы
DOCS#346999#.USR
KRS#346999#.USR
PBI#346999#.USR
PPN#346999#.USR
QSA#346999#.USR
от 22.07.2008 и ещё много таких-же файлов,
в которых меняются ххх#хххх#.USR ну и дата их создания

Желательно предварительно создавать сначала папку с датой (не всегда сегодняшнее число !!! , но всё в пределах одного текущего месяца)
Надо рассортировать эти файлы по папкам с датой создания этих файлов!

Возможно ли такое?
Автор: 01MDM
Дата сообщения: 01.08.2008 22:25
vitrzn


Код:
@echo off
for %%i in (*.usr) do call:move "%%i" %%~ti
goto:eof

:move
md %2 2>nul
move %1 %2
Автор: Elroir
Дата сообщения: 01.08.2008 22:55
01MDM
Измени немного код - %%~ti выдает кроме даты, еще и время с двоеточием, соответственно создание директорий не сработает.
Автор: 01MDM
Дата сообщения: 02.08.2008 00:54
Elroir
%%~ti передается без кавычек, т.е в %2 только дата (первая часть переменной).
Автор: Elroir
Дата сообщения: 02.08.2008 02:48
01MDM
Точно. Извини - не обратил внимания
Автор: vitrzn
Дата сообщения: 02.08.2008 11:40
01MDM

Цитата:
@echo off
for %%i in (*.usr) do call:move "%%i" %%~ti
goto:eof

:move
md %2 2>nul
move %1 %2


ОГРОМНОЕ СПАСИБО !!!
Всё работает!

Но я так понимаю что формат вывода названии/даты папки ( 28.07.2008 ), это зависит от настроек этого формата на локальном компе?

Или можно это сменить на др. формат, типа 2008.07.28 ?
Автор: 01MDM
Дата сообщения: 02.08.2008 14:10
vitrzn

Цитата:
Но я так понимаю что формат вывода названии/даты папки ( 28.07.2008 ), это зависит от настроек этого формата на локальном компе?

Да зависит от формата даты

Цитата:
Или можно это сменить на др. формат, типа 2008.07.28 ?

Можно сменить:

Код:
@echo off
for %%i in (*.usr) do call:move "%%i" %%~ti
goto:eof

:move
for /f "tokens=1-3 delims=." %%i in ("%2") do set folder=%%k.%%j.%%i
md %folder% 2>nul
move %1 %folder%

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: DVD-video (ДВД-видео) - что и как (часть 3)


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