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

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

Автор: Kirillhome
Дата сообщения: 22.01.2010 01:15
takt03

Цитата:
ЕЩЁ 1 ВОПРОСИК КАК МОЖНО СДЕЛАТЬ ЧТОБЫ БАТ ЗАПУСКАЛСЯ ХОТЯБЫ СВЁРНУТЫМ тоесть "start /min 1.bat " типа такой команды только в пакетном файле.

Так сам же всё и написал :)

Код: start "" /min 1.bat
Автор: vov4ka
Дата сообщения: 22.01.2010 05:08

Цитата:
А зачем? Чем не устраивает "планировщик задач"???

Слышал,что через него некоторые вирусы скрипты свои запускают,поэтому его опасаюсь.
Автор: Nuke142
Дата сообщения: 22.01.2010 11:28
А как удалить всю папку (не оставить пустой, а именно удалить), в который находится сам батник, вместе с файлами, подпапками и самим батником ?
При чем, название папки может быть случайным.
Автор: king_stiven
Дата сообщения: 22.01.2010 12:39
Nuke142
На вирус смахивает. Сначала перейди в родительскую папку
cd /?
, потом удали

Цитата:
· Переменная %0

rd /?
Автор: Kirillhome
Дата сообщения: 22.01.2010 13:08
Nuke142
Примерно так:

Код:
@echo off
set my_path=%~dp0
set my_disk=%my_path:~0,3%
set tmp_disk=%TEMP:~0,2%
if /I "%my_path%"=="%my_disk%" (
echo Not for root on disk
GOTO :EOF
) ELSE (
%tmp_disk%
cd "%TEMP%"
rd /s /q "%my_path%"
GOTO :EOF
)
Автор: king_stiven
Дата сообщения: 22.01.2010 13:53
Вопрос: как в sed к 10 й строке приписать 32 строку? В строках полно кракозябров.
Автор: Pacho
Дата сообщения: 22.01.2010 17:33
Как присвоить переменной значение, выводимое другой командой? К примеру переменной VAR присвоить значение текущего каталога, выводимого командой CD.
Автор: Kirillhome
Дата сообщения: 22.01.2010 20:01
Pacho


Код:
for /f "tokens=*" %%a in ('CD') Do echo %%a
Автор: king_stiven
Дата сообщения: 22.01.2010 20:09
Pacho
for /f "tokens=*" %%a in ("%CD%") Do set "VAR=%%a"
Автор: BorlandIMHO
Дата сообщения: 22.01.2010 20:10

Цитата:
// Вот тут я дописал чтобы в смд открывалась папка иначе прога тупит

Тогда уж надо не cd "%LOCALFOLDER%", а pushd "%LOCALFOLDER%" перед for'ом и popd после него...
И Вы уже определитесь со слешами - мой код писАлся в расчёте на указание локального пути со слешем на конце и ftp-пути без обратного слеша на конце...
Автор: Scaramanga
Дата сообщения: 23.01.2010 06:50
Всем привет. В написании батников не спец, точнее вообще этим практически не занимался. Проблема в том что качаю по ночам на анлиме с 3g модема, а там бывают переодически разрывы связи, каждый такой разрыв уводит оставшуюся ночь в пустую.Интересует следущее
Возможно ли в батнике написать следущую задачу

Запускается батник и в фоне. Действия:
1. Запуск программы "C:\Program Files\3G Modem Manager\3G Modem Manager.exe"
2. Ожидание 2 минуты
2.запуск дозвона телефонного подключения NIGHT
3. Ожидание разрыва соединения
4. В случае разрыва соединения убивается процесс 3G Modem Manager.exe
на этом зацикливается т.е. после разрыва соединения переходим снова к пункту 1 и т.д.
Батник закрывается в 7.55 утра

Заранее спасибо за ответы
Автор: Pacho
Дата сообщения: 23.01.2010 09:33
Kirillhome
king_stiven
Я про команду, которая передаёт выходные данные от одной команды в качестве параметров для другой команды, как, например, здесь:

Код: assoc ^| findstr /i word
Автор: takt03
Дата сообщения: 23.01.2010 12:40
Kirillhome
Просто хотел чтобы в одном батнике всё вместилось. У меня ещё в процессе разработке, функция добавляющая этот бат в сервисы. А если 2 бата будет то будет просто не удобно.

Добавлено:
Народ а нет ли программки для проверки бат фалов. Ато постоянно запускать, создавать левые копии ручками надоело и пальцы уже болят
Пример:
Как на делфи 7 проверка кода, подсветка и другие функции.
P.S Для работы с batch файлами только одна прога есть quick batch file compiler.
Автор: Kirillhome
Дата сообщения: 23.01.2010 12:59
Scaramanga

[more=Примерно так]
Код:
@set @x=0 /* Это строка должна быть первой. Далее идёт основной текст командного файла
@echo off

:_start
start "" "C:\Program Files\3G Modem Manager\3G Modem Manager.exe"
:: Здесь делаем паузу 200 секунд (200000 миллисекунд)
cscript //nologo /e:jscript "%~f0" 200000

:: Позвоним
:: Night - имя соединения
:: UserName - имя пользователя для этого соединения
:: UserPwd - пароль для этого соединения
rasdial Night UserName UserPwd

:_prv_soed
set my_full_time=%TIME%
IF %my_full_time:~0,1%==0 (
set my_house=%my_full_time:~1,1%
) else (
set my_house=%my_full_time:~0,2%
)
IF %my_full_time:~3,1%==0 (
set my_min=%my_full_time:~4,1%
) else (
set my_min=%my_full_time:~3,2%
)
:: Проверили время, если оно больше, чем 7:55
:: То всё снимаем
if %my_house% GEQ 7 (if %my_min% GEQ 55 (goto :_Kill_all))
:: Если bat-ник запускается не в полночь, а раньше - надо будет переделать
:: проверку времени
:: К примеру, запускаться всё имеет право после 9 вечера
:: if %my_house% GEQ 7 (if %my_house% LSS 21 (if %my_min% GEQ 55 (goto :_Kill_all)))
::
:: Делаем паузу в 60 секунд
cscript //nologo /e:jscript "%~f0" 60000
::
:: Проверим соединение (т.е. проверяем раз в минуту)
Ping -n 1 ya.ru >Nul
if ErrorLevel 1 GoTo :_Kill_Proc
if ErrorLevel 0 GoTo :_prv_soed


:_Kill_proc
:: Разорвём соединение (на всякий случай)
:: Night - имя соединения
rasdial Night /Disconnect
:: Делаем паузу в 60 секунд (ждём, пока разрыв завершится)
cscript //nologo /e:jscript "%~f0" 60000
:: Убъём процесс
:: На самом деле имя процесса, как мне кажется,
:: будет другим. Надо проверить (через диспетчер задач, к примеру)
Taskkill /F /IM "3G Modem Manager.exe"
:: Делаем паузу в 60 секунд (ждём, пока он завершится)
cscript //nologo /e:jscript "%~f0" 60000
:: Уходим в начало
goto :_start

:_Kill_all
:: Разорвём соединение
:: Night - имя соединения
rasdial Night /Disconnect
:: Делаем паузу в 60 секунд (ждём, пока разрыв завершится)
cscript //nologo /e:jscript "%~f0" 60000
:: Убъём процесс
:: На самом деле имя процесса, как мне кажется,
:: будет другим. Надо проверить (через диспетчер задач, к примеру)
Taskkill /F /IM "3G Modem Manager.exe"

:: Следующая строка должна быть последней
goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0))
Автор: israel_rider
Дата сообщения: 23.01.2010 13:00
Пипл, помогите!
Есть директория с файлами. Их нужно преобразовать. Пишу –
@Echo Off
For %%a In (*.htm) Do phpCB.exe %%a > %%a
Где –
phpCB.exe программа, которая преобразовывает мои файлы.
Её синтаксис - phpCB.exe source_file > destinations_file
Батник не работает. В чём моя ошибка?
Автор: takt03
Дата сообщения: 23.01.2010 14:26
Как реализовать подключение к интернету если у меня ДСЛ модем. Из бат разумеется.
делаю:

[cod]
C:\>rasdial метро
Установка связи с МЕТРО...
Проверка имени и пароля пользователя...

Ошибка службы удаленного доступа 718 - Подключение прервано , т.к. удаленный ко
мпьютер не ответил вовремя. Нажмите кнопку "Дополнительно" или обратитесь в цент
р поддержки за помощью, указав номер ошибки.

Чтобы вывести сведения о данной ошибке:
введите 'hh netcfg.chm' и в Справке
выберите раздел разрешения проблем, затем сообщений об ошибках и найдите
718.

C:\>

[cod]

Подключение метро отлично работает ели на него мышкой нажать или сделать ярлык подключения скинуть его на диск D:\
убрать оторажения хода подключение.
и написать бат
start d:\1.lnk
ping -n 3 127.0.0.1 >null

возможно проблемма связана с тем что подключение не осуществляется за короткий промежуток времени. Тоесть время ожидание подключение слишком мало.

Автор: haxx0r
Дата сообщения: 23.01.2010 14:34
rasdial должен быть в таком формате:

rasdial [название подключения] [юзер] [пасс]
Автор: wolf0425
Дата сообщения: 23.01.2010 15:19
israel_rider
Цитата:
For %%a In (*.htm) Do phpCB.exe %%a > %%a
Где –
phpCB.exe программа, которая преобразовывает мои файлы.
Её синтаксис - phpCB.exe source_file > destinations_file
Батник не работает. В чём моя ошибка?
наверно же в том что у тебя destinations_file=source_file, а твой конвертер это не допускает.


Код: For %%a In (*.htm) Do phpCB.exe "%%a" > tempfile && move /y tempfile "%%a"
Автор: israel_rider
Дата сообщения: 23.01.2010 15:25
wolf0425! Скорее всего ты прав. Потому что -
@Echo Off
For %%a In (*.htm) Do phpCB.exe %%a > change\%%a
Срабатывает.
Поэтому, за идею огромный сенкс! Сейчас буду пробовать.
Автор: wolf0425
Дата сообщения: 23.01.2010 15:31
Pacho

Цитата:
А можно сделать, чтобы эти команды выполнялись в новой копии CMD?
а как ты их об этом скажешь новому то cmd? и что должна делать текущая копия?
Автор: israel_rider
Дата сообщения: 23.01.2010 15:33
wolf0425! Твоя идея сработала!!!!!!
Автор: wolf0425
Дата сообщения: 23.01.2010 15:50

Цитата:
Твоя идея сработала!!!!!!
я идеи иногда проверяю перед тем как советовать, так что тут и не сомневался
Автор: rutamsystem
Дата сообщения: 23.01.2010 16:38
Привет,
Как удалить из каталога все подкаталоги и все файлы за исключением файлов xls, doc, txt
Автор: Kirillhome
Дата сообщения: 23.01.2010 16:41
Pacho

Цитата:
Как присвоить переменной значение, выводимое другой командой? К примеру переменной VAR присвоить значение текущего каталога, выводимого командой CD.

Стоп, а что, просто так не проходит?

Код: set var=%CD%
Автор: wolf0425
Дата сообщения: 23.01.2010 17:05

Цитата:
Стоп, а что, просто так не проходит?
а ты команду CD (взятую только в качестве примера) и переменную %CD% - не смешивай.
Спрашивали именно про то как перехватывать stdout команд, т.е. на прошлой странице ты ответил как раз правильно.
Хотя перехватывать именно вывод команды cd для запихивания в переменную - смысла мало, да. Как и вывод date /t
Автор: Pacho
Дата сообщения: 23.01.2010 17:17
wolf0425

Цитата:
а как ты их об этом скажешь новому то cmd? и что должна делать текущая копия?

В шапке есть пример перехода из 32-битной версии cmd.exe в 64-битную. Но там используются два скриптовых файла, что не всегда удобно. Хочу сделать это в одном файле.
Если запускать в командной строке:
Код: %SystemRoot%\Sysnative\cmd.exe
Автор: Scaramanga
Дата сообщения: 24.01.2010 01:06
KirillhomeПосле соединения примерно через минуту консоль закрывается сама по себе, соответсвенно слежения уже не происходит


Добавлено:
Kirillhome
Проблема как я понимаю где то тут
:_prv_soed
set my_full_time=%TIME%
IF %my_full_time:~0,1%==0 (
set my_house=%my_full_time:~1,1%
) else (
set my_house=%my_full_time:~0,2%
)
IF %my_full_time:~3,1%==0 (
set my_min=%my_full_time:~4,1%
) else (
set my_min=%my_full_time:~3,2%
)
ошибка по которой закрывается батник
Непредвиденное появление: (.

пробывал изменить на
set my_full_time=%TIME%
IF %my_full_time:~0,1%==0 (set my_house=%my_full_time:~1,1%) else (set my_house=%my_full_time:~0,2%)
IF %my_full_time:~3,1%==0 (set my_min=%my_full_time:~4,1% ) else ( set my_min=%my_full_time:~3,2%)

стало выдавать
Непредвиденное появление: (set.

C:\Users\Юрий>

Добавлено:
Исправил на.
:_prv_soed
set my_full_time=%TIME%
IF "%my_full_time:~0,1%"=="0" (set "my_house"=%my_full_time:~1,1%) else (set my_house=%my_full_time:~0,2%)
IF "%my_full_time:~3,1%"=="0" (set "my_min"=%my_full_time:~4,1% ) else ( set my_min=%my_full_time:~3,2%)

Все заработало)

Добавлено:
Последний вопрос:
Ping -n 1 ya.ru >Nul
if ErrorLevel 1 GoTo :_Kill_Proc
if ErrorLevel 0 GoTo :_prv_soed
Как тут увеличить время ожидания ответа хотя бы до 10000 мс? когда ухожу спать приоритет закачки выставляю по максимуму, уже замечал пару раз что батник просто не дожидается ответа от сервера
Автор: wolf0425
Дата сообщения: 24.01.2010 04:00

Цитата:
то скрипт затыкается на запуске новой копии CMD и пока её не завершить, следущие команды не запускаются.

текущий поток команд исполняется текущим интерпретатором, он же никуда не делся и ждет завершения команды. Хочешь чтоб не ждал - сделай чтобы команда заканчивалась, т..е. запускай новую копию cmd через start и указывай ей ну например тот же батник с параметром - а в начале батника делай ветвление по проверке этого параметра.

Добавлено:
Scaramanga

Цитата:
Ping -n 1 ya.ru >Nul
if ErrorLevel 1 GoTo :_Kill_Proc
if ErrorLevel 0 GoTo :_prv_soed
Как тут увеличить время ожидания ответа хотя бы до 10000 мс?

ping /?
Автор: Pacho
Дата сообщения: 24.01.2010 10:57
Как записать такую конструкцию?

Код: for /f "delims==" %%i in ('assoc ^| findstr /i word') do (
тут чё-то делаем
далее, если %%i входит в список, например (.doc .rtf), то делаем то-то
)
Автор: 01MDM
Дата сообщения: 24.01.2010 12:43
Pacho


Код:
for /f "delims==" %%i in ('assoc ^| findstr /i word') do (
тут чё-то делаем
echo %%i | findstr /i "\.doc \.rtf" && делаем то-то
)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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