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

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

Автор: 19w85
Дата сообщения: 12.09.2008 08:20
Всем привет
Возможно ли в батнике сделать лимит ожидания ввода переменной, по истечении которого продолжилось выполнение батника, даже если значение не было введено?
Автор: Elroir
Дата сообщения: 12.09.2008 11:26
19w85

Цитата:
Возможно ли в батнике сделать лимит ожидания ввода переменной, по истечении которого продолжилось выполнение батника, даже если значение не было введено?

Да, с помощью утилиты choice.exe входящей в состав Win2003 или Win2000 Resource Kit.
Автор: avkorets
Дата сообщения: 12.09.2008 13:34

Цитата:
set /p firstline=<%%j

а так же красиво возможно выцепить номер последней строки из файла??
тупо номер и больше ничего=)
Автор: 01MDM
Дата сообщения: 12.09.2008 14:54
avkorets

Цитата:
выцепить номер последней строки из файла??



Код:
for /f "tokens=1 delims=:" %%i in ('findstr /n .* 1.txt') do set num=%%i
echo %num%
Автор: avkorets
Дата сообщения: 12.09.2008 15:38

Цитата:
01MDM

а как оперировать этим значением?
прибавить или отнять значение..в данном случае номер строки ???
set /a чот не пашет....ругается на остутствующий оператор и опреанд...
сказать проще.
в любом файле определить последнюю строку вывести ее и 12 идущих до нее.
Автор: king_stiven
Дата сообщения: 12.09.2008 16:40

Цитата:
в любом файле определить последнюю строку вывести ее и 12 идущих до нее.

Что вывести, саму строку, 12 последних строк или номер ? Говори чётче, и ответ сразу будет конкретный.

Цитата:
а как оперировать этим значением?
прибавить или отнять значение..в данном случае номер строки ???


Код: for /f "tokens=1 delims=:" %%i in ('findstr /n .* 1.txt') do set num=%%i
set /a num-=12
echo %num%
Автор: avkorets
Дата сообщения: 12.09.2008 17:02
=)
Решил сам ток другим методом =)
@echo off
setlocal enabledelayedexpansion
for %%i in (*.txt) do set file_name=%%i
for /f "tokens=1 delims=:" %%j in ('findstr /n .* %file_name%') do set /a "num=%%j"-12)
for /F "skip=%num% tokens=1 delims=" %%f in (%file_name%) do echo %%f>>1.tmp
move /y 1.tmp %file_name%
Кстати прием set /a num-=12 забавный возьму на заметку спасибо всем еще раз=)

Парвда есть тумманность одна...насчет строки for /f "tokens=1 delims=:" %%j in ('findstr /n .* %file_name%')
непонятно почему она ищет именно последнюю строку...В моем файле последняя срока была ====, мож разжуете??
Пожалуйста!!!!
Автор: king_stiven
Дата сообщения: 12.09.2008 17:46
avkorets
Набери просто в ком строке
findstr /n .* 1.txt
и поймёшь

Автор: avkorets
Дата сообщения: 12.09.2008 19:21
king_stiven
нумерует после номера ставит :
вцелом цикл в колону ставит номера строк...
непонятно почему точка =)
Впринципе если подставить : тоже работает..
Автор: 19w85
Дата сообщения: 12.09.2008 20:04
Elroir

Цитата:

Цитата: Возможно ли в батнике сделать лимит ожидания ввода переменной, по истечении которого продолжилось выполнение батника, даже если значение не было введено?

Да, с помощью утилиты choice.exe входящей в состав Win2003 или Win2000 Resource Kit.
Автор: Elroir
Дата сообщения: 13.09.2008 03:27
19w85

Цитата:
Что-то я не понял каким образом это сделать с помощью choice...

A я, как выясняется, не понял вопрос. Действительно, с помощью choice.exe нельзя ввести переменную. Эта утилита позволяет вводить только односимвольные значения.
Автор: 19w85
Дата сообщения: 13.09.2008 04:19
Elroir

Цитата:
Действительно, с помощью choice.exe нельзя ввести переменную

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


Автор: stydik
Дата сообщения: 13.09.2008 19:19
Возможно ли указать в БАТнике вывод в ЛОГ файл истории перемещения.
Имеется такой батник:
@Echo off
@rar a D:\copy\ c:\file.rtf
@echo LOG %DATE% >> copy.log

В лог мне выводится дата. С помощью какой переменной можно указать путь архивирования, в данном случае это D:\COPY ??? Чтоб в лог файле я наблюдал время запуска и куда архивировался файл. Я понимаю, что можно и самому прописать, но это будет только для моей машины. На других буквы дисков другие. Кто поможет с переменной ???


Автор: XoMaiK
Дата сообщения: 15.09.2008 12:06
Подскажте, пожалуйста, как из БАТ- файла организовать завершение другого БАТ файла и продолжить выполнение первого? taskkill в этом случае не подходит, поскольку нужно завершить cmd.exe и завершится первый... или я ошибаюсь?
Автор: KapralBel
Дата сообщения: 15.09.2008 12:20
XoMaiK
Вызывай 2-й батник из 1-го так
Call second.cmd
Автор: XoMaiK
Дата сообщения: 15.09.2008 14:43
KapralBel, немножко не то, что мне нужно... попробую обрисовать поподробнее...
Есть несколько БАТ- файлов (сервисов)- они висят в системе... иногда кто- то из них, так сказать, подвисает. Я хочу организовать "рестарт" сразу всех. То есть, мне бы их сначала завершить, а потом, соответственно - запустить.
Автор: KapralBel
Дата сообщения: 15.09.2008 15:08
XoMaiK
Т.е. в памяти висит несколько выполняющихя батников, которые вызывают друг друга?
Автор: king_stiven
Дата сообщения: 15.09.2008 18:38
XoMaiK
следующая команда
taskkill /F /FI "WINDOWTITLE eq 1234" /im cmd.exe /T
завершит батник 1234.bat
заголовок 1234 задаётся командой
title 1234
Автор: XoMaiK
Дата сообщения: 16.09.2008 11:13
king_stiven, благадарю, все работает.
Есть еще вопрос... Итак, в сами батники я лезть не хочу(прописывать title xxx). Посмотрел, что если запускать батник с ярлыка(руками), то окну батника автоматически передается в заголовок имя ярлыка. Но, если запускать ярлык из батника коммандой start xxx.lnk, имя ярлыка в заголовок окна не передается.
Собственно сам вопрос, можно ли запустить батник и передать ему имя...
пробывал так:
start "test" c:\y.bat
заголовок выходит такой: test - c:\y.bat
Хотелось бы отсечь путь из заголовка...
[off/]Извиняюсь, если слишком мутно написал. [/off]
Автор: mistx
Дата сообщения: 16.09.2008 16:39
Друзья!
подскажите плиз команду командной строки,
которая позволила переименовать все файлы на всем диске F:\ xxxx.doc на xxx.rtf
интересует не просто переименование, а полное конвертирование в структуру rtf

может есть у кого-нибудь готовый батник?

Заранее благодарю
Автор: KapralBel
Дата сообщения: 16.09.2008 16:45
mistx
Переименовать не проблема
А вот сконвертировать - не встречал я такой утилиты

Если только макрос на VBA в самом ворде писать
Автор: king_stiven
Дата сообщения: 16.09.2008 18:24
XoMaiK
Создай ярлык к батнику 1234.bat
запусти
start "test" "Ярлык для 1234.bat.lnk"
Автор: bmax
Дата сообщения: 17.09.2008 11:18
Люди! Хелп!
проблемка в следующем:
есть программка которая следит за изменением папки. Как только в ней (в папке) появляется новый файл запусается батник содержащий такую часть кода -

FOR /f "tokens=*" %%j in ('dir /b /s /a-d "D:\1\*.*"') do set /a count+=1
IF EXIST D:\1\*.* set "count=0%count%" ELSE
set "count=00%count%"
set "count=%count:~-2%"

дальше полученное значение(фактически счетчик) используется для формирования имени файла.

Так вот если новые файлы поступают с разницей хотя бы в секунду - все ОК. Но стоит только в одну секунду прийти двум файлам - второй получает в качестве имени не истинный count, a random(значение большее на 3, 7, 10, и тд).

Есть варианты побороть эту напасть?
Пробовал делать задержку при подсчете (пинговал локал адрес) -нулевой результат


Добавлено:
Может быть как вариант сделать проверку на наличие уже запущенного данного бат файла, и в случае положительного ответа сказать второму бат файлу чтобы он ждал антил первый не присвоит имя первому новому файлу и затем продолжал свое выполнение. Но как реализовать это программно ума не приложу. Кто знает, помогите пожалуйста.
Автор: NIKZZZZ
Дата сообщения: 17.09.2008 12:34
bmax

Цитата:
Есть варианты побороть эту напасть?


Можно подсчитывать к-во файлов в папке до тех пор, пока значение не устаканится - тоесть два последовательных подсчета не дадут одинаковый результат.


Автор: bmax
Дата сообщения: 17.09.2008 13:14
Простите не силен в написании батов.

Цитата:
Можно подсчитывать к-во файлов в папке до тех пор, пока значение не устаканится - тоесть два последовательных подсчета не дадут одинаковый результат.

Как это? Сделать метку два раза подсчитать количество файлов и если они не равны делаем джамп на метку? подскажите как в батнике метку сделать
Автор: NIKZZZZ
Дата сообщения: 17.09.2008 14:19
bmax

Примерно так:


Код: set count1=999999999999999
:_1
set count=0
FOR /f "tokens=*" %%j in ('dir /b /s /a-d "D:\1\*.*"') do set /a count+=1
if %count%==%count1% goto _2
set count1=%count%
goto _1
:_2
..........
Автор: bmax
Дата сообщения: 17.09.2008 14:46
примерно понял )
2NIKZZZZ спасиб!
Автор: Stiker
Дата сообщения: 17.09.2008 22:46
подскажите пожалуйста как решить такую задачу
если устанавливаю программу в автозагрузку(сервер ключа) то он грузится раньше чем надо - потом программа запускается в демо режиме
если же руками запустить после полной загрузки компа - всё работает.

возможно создать батник с задержкой загрузки по времени запуска
если да то что надо прописать в нём?
Автор: baspav
Дата сообщения: 17.09.2008 23:14
Помогите неспециалисту:
1. написать командный файл, для соединения с интернетом, который бы в случае ошибки соединения повторял бы его до успешного или определенное количество раз. (Я подставил в батник команду rasdial, соединение идет, но в случае неудачи - просто выкидывает сообщение с кодом ошибки.)
2. Хочу запустить два ехешных файла, но батник ждет завершения работы предыдущего. Как сделать так, чтоб он не ждал, а сразу выполнив одну строку перешел к выполнению следующей?
3. Как заставить батник ждать определенное время перед запуском следующей строки?
Если кто сможет написать такой файл, буду очень признателен.
Пожалуйста не оставьте без внимания. Ну очень нужно.
Спасибо!
Автор: king_stiven
Дата сообщения: 18.09.2008 06:00
baspav

Цитата:
3. Как заставить батник ждать определенное время перед запуском следующей строки?

Stiker

Цитата:
возможно создать батник с задержкой загрузки по времени запуска
если да то что надо прописать в нём?

В шапке

Цитата:
Делаем паузу в командном файле стандартными средствами Windows


Цитата:
Альтернативные решения »

baspav

Цитата:
Как сделать так, чтоб он не ждал, а сразу выполнив одну строку перешел к выполнению следующей?

START /?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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