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

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

Автор: gryu
Дата сообщения: 07.04.2010 10:34
wolf0425 кликом мыши или вводом с клавиатуры. ( эксплорере. Не в ФАР или другом альтарнативном менеджере. )


Автор: gryu
Дата сообщения: 07.04.2010 10:53
king_stiven, ещё раз спасибо за блок обработки времени..
Вот только я не понял как его ограничить.
Если весь код батника представляет данный блок, то всё работает,
но нужно после этого блока ещё команды дописывать и передним тоже нужно, а он каждый раз "сверху вниз" гонит.
Как то это через goto делается... не могу сообразить как.

Мне нужно к примеру
f %errorlevel% LEQ 5 echo %fgh% created 5 min >nul | goto:error
Да и перед этим блоком тоже койчего писать нужно.


Добавлено:
ivn1978

Цитата:
И еще: как устроить проверку "%yesno%", т.е. чтобы при вводе любого символа кроме y и n вызывалась ошибка?

set /p ts="вам кого? y/n: "
if not definded ts goto:error
if %ts%==y goto:yes
if %ts%==n goto:no

:yes
бла -бла -бла

:no
бла бла бла

:error
бла бла бла
Автор: wolf0425
Дата сообщения: 07.04.2010 10:59

Цитата:
кликом мыши или вводом с клавиатуры. ( эксплорере.
странно это - из эксплорера или cmd у меня запускается нормально. XP SP3
Автор: mugil_cephalus
Дата сообщения: 07.04.2010 11:02
anzibal
вот я в консоли ввел такие команды
F:\>chcp 1251>nul

F:\>echo.hi>"%systemroot%\Tasks\предпо след нее.job"

F:\>echo.hi>%systemroot%\Tasks\latest.job

F:\>dir /a-d/o-d/tc %systemroot%\Tasks
Том в устройстве F имеет метку win1
Серийный номер тома: BE1C-92F1

Содержимое папки F:\WINDOWS\Tasks

04/07/2010 11:21 AM 4 latest.job
04/07/2010 11:21 AM 4 предпо след нее.job
03/09/2010 11:24 AM 274 AdobeARM.job


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

1) chcp 1251 - это если задание на кириллице
2) четвертая (у меня - пятая) token field (см. for /? ) в виде * нужна, если есть пробелы в имени задания
Если последний символ в строке tokens= является
звездочкой, создается дополнительная переменная,
значением которой будет весь оставшийся текст в
строке после обработки последней подстроки.
3) dir /a-d/o-d/tc
/o [[:]порядок_сортировки]
Управление порядком сортировки и вывода имен файлов и каталогов командой dir.
/o-d Сортировка по дате и времени от поздних к ранним
/t [[:]поле_времени]
Задание поля времени для вывода и сортировки.
/tc Создание
4) skip=6 - "методом тыка" установлено попадание на второе сверху задание (предпоследнее по дате создания)
5) %var:~-4% (см. set /? ) - это проверка по расширению, что это не файлы SA.DAT и desktop.ini (то есть удаляем из переменной var все, окромя последних 4-ех символов, что и будет в нашем случае - расширением )
%PATH:~-10% - извлечет последние 10 символов переменной PATH.

Цитата:
06.04.2010 22:56 154 5.job 6
06.04.2010 22:55 154 4.job и с этой уже работает.
это число строк как раз и указывается в скипе...насколько я сейчас понимаю.

да
Автор: gryu
Дата сообщения: 07.04.2010 11:05
wolf0425

Цитата:
из эксплорера или cmd у меня запускается нормально.

А вот ещё такой вопрос.
в некоторых случаях ругается chcp - не является командой... что то типа такого.
Расширенную командную строку включаю.
Автор: king_stiven
Дата сообщения: 07.04.2010 11:06
gryu

Цитата:
Мне нужно к примеру
if %errorlevel% LEQ 5 echo %fgh% created 5 min >nul | goto:error

вот так
if %errorlevel% LEQ 5 goto:error


Цитата:
Вот только я не понял как его ограничить.
Если весь код батника представляет данный блок, то всё работает,
но нужно после этого блока ещё команды дописывать и передним тоже нужно, а он каждый раз "сверху вниз" гонит

Навпиши в виде задачи, что надо, а не словами и ссылками.
Автор: gryu
Дата сообщения: 07.04.2010 11:12
Кстати о решении
Цитата:
REG ADD HKCU\Console
для включения шрифта в консоли.
На 2000-ке не работает.
2000-к не знает команды "reg"



Добавлено:
king_stiven
Цитата:
Навпиши в виде задачи, что надо, а не словами и ссылками.

Пишу.
В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)
Мне нужно организовать копирование этих файлов на сетевой диск.
На этом сетевом диске есть доступ секретарю, которая сортирует файлы в ручную. Что то удаляет, что то сохраняет.
а. нужно что бы удалённые ею файлы не восстанавливались.
б. в случае ошибка записи (малоли что, всё же сетевой ресурс, а не локальный) вывыодилась ошибка/предупреждение.
-------------------------------------------------
В идеале время ошибки запоминалось в переменную и вносилось бы в строку копирования в следующий раз... (это фантазии. я ещё всё не до конца это продумал).

Варианты решения я разные рассматривал.
В том числе копирование файлов с последующим переносом их в другую папку(пункт а)
Автор: mugil_cephalus
Дата сообщения: 07.04.2010 11:21
ivn1978

Цитата:
ммм.. не работает что то. вылетает скрипт и все. хотя пауза в конце стоит

запусти батник в консоли и не вылетит
Автор: gryu
Дата сообщения: 07.04.2010 11:24
ivn1978

Цитата:
ммм.. не работает что то. вылетает скрипт и все. хотя пауза в конце стоит


Цитата:

@echo off
:begin
set /p ts="пиво будешь? y/n: "
if not definded ts goto:error
if %ts%==y goto:yes
if %ts%==n goto:no

:yes
echo ктоб сомневался
::::: но потом перенаправление же нужно туда куда нужно в батнике!
goto:mag
pause

:no
echo Ну и зря
pause
exit

:error
echo а водки всё равно нет!
pause
goto:begin

:mag
echo Бегом в магазин!
pause
exit
Автор: wolf0425
Дата сообщения: 07.04.2010 12:04

Цитата:
В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)
Мне нужно организовать копирование этих файлов на сетевой диск.
На этом сетевом диске есть доступ секретарю, которая сортирует файлы в ручную. Что то удаляет, что то сохраняет.
а. нужно что бы удалённые ею файлы не восстанавливались.
б. в случае ошибка записи (малоли что, всё же сетевой ресурс, а не локальный) вывыодилась ошибка/предупреждение.
постановка какая-то некачественная.
1. вывод ошибки записи тебе наверно не очень нужен - нужно повторение неудачного копирования на следующем проходе, после восстановления связи.
2. чтоб удаленные файлы не восстанавливались - надо их просто повторно не копировать.
Для этого после успешного копирования файла в сетевую папку надо его удалить из входной (куда факс складывает) - напрочь или в архив переместить. Ну или список скопированного вести и сверяться с ним перед копированием.
как-то так:

Код: for %%a in (c:\fax_in\*.pdf) do copy "%~fa" \\server\faxex\ && move "%~fa" c:\fax_old\
Автор: king_stiven
Дата сообщения: 07.04.2010 12:21
gryu
да очень расплывчато, и опять словами, вроде в школе математику учили.
Автор: gryu
Дата сообщения: 07.04.2010 12:42
ivn1978

Цитата:

@echo off
:start
set /p tsk="To continue? y/n: "
echo.
if not defined tsk goto:start
if %tsk%==y goto:aga
if %tsk%==n goto:nea
goto:err

:aga
echo 1
pause
goto:start

:nea
echo 2
pause
goto:start

:err
echo error
pause
goto:start


Добавлено:
king_stiven
Цитата:
да очень расплывчато, и опять словами, вроде в школе математику учили.
вы спросили задачу. Я написал.
Учил. В школе. И не только. Давно. Последний раз "учил математику" году этак в 1989.
Там правда уже не математика была.
Автор: Cosmogor
Дата сообщения: 07.04.2010 12:46
ivn1978

Цитата:
Непредвиденное появление: ts.


Если хочешь при двойном клике по батнику, то
правильней будет так:

Код:
Set /p ts="Enter N/Y: "
if %ts%==N GOTO NO
if %ts%==Y GOTO YES
if not %ts%==definded GOTO ERROR
:NO
MSG * Enter N
EXIT
:YES
MSG * Enter Y
EXIT
:ERROR
MSG * ERROR
EXIT

Не забудь при вводе N/Y регистр букв!
Автор: king_stiven
Дата сообщения: 07.04.2010 12:52
gryu
Дано :
в папку c:\temp упало n файлов file1 file2 file3 ... filen (на момент выполнения первой операции)
Надо...(скопировать?перенести?) эти файлы в \\server\faxex\
...
Предположим файл file3 не скопировался...тогда надо...
...
в папку c:\temp упала следущая порция ....
...
и т д
Автор: gryu
Дата сообщения: 07.04.2010 12:52
кстати. как очистить кешь переменной %tsk% в выше приведённом примере?
а то последняя переменная запоминается и if not defined tsk goto:start перестаёт срабатывать выдавая tsk равным предыдущему выбору.

Добавлено:
king_stiven
дано
В папку
c:\venta\fax\in падают файлы формата {2010-04-07}.tif, {2010-04-07}(2).tif, {2010-04-07}(3).tif и т.д.
Надо.
Скопировать оные в папку E:\in при условии что папка сетевая. (не суть. можно и на \\server\fax\in)
Все остальные условия описаны выше.
а. файлы в сетевой папке сортируются и в случае их удаления не должны восстанавливатся.
б. при проблеме записи нужно получить уведомление.

wolf0425

Цитата:
надо их просто повторно не копировать.
Для этого после успешного копирования файла в сетевую папку надо его удалить из входной (куда факс складывает) - напрочь или в архив переместить.
Это я думал. Места мало. Реально мало. Под факсом живёт древнючий ноут с хардом в 4 гига.
А бэкапить в сеть, та же проблема.
Проблему бэкапа решают cron + WinRAR.
Запуск батника на копирование, тоже по cron-у
Автор: king_stiven
Дата сообщения: 07.04.2010 13:13
gryu
тогда папка c:\venta\fax\in распухнет, так как в условиях нет, чтоб из неё хоть что то удалялось.
Автор: mugil_cephalus
Дата сообщения: 07.04.2010 13:14
01MDM
NIKZZZZ
и другим
по вопросу анимации в батниках из Задачи на bat-файлах 7
нашел случайно этот сабж на википедии - вот
ASCII art
ASCII-анимация
ASCII-анимация является одним из направлений ASCII-арта. В этом направлении рисуются наборы ASCII-картинок, при пролистывании которых получаются мультфильмы. Обычно высота картинки выбирается равной стандартной высоте программы просмотрщика текста, под которую он оптимизируется. При этом смена кадров производится нажатием клавиши Page Down.

Также на PC в среде DOS возможен вывод ASCII-анимации из BAT-файлов через драйвер ANSI.SYS с использованием Esc-последовательностей. Этот метод не получил широкого распространения из-за того, что он требует загрузки драйвера, который редко используется по назначению и занимает место в памяти.

Известны также анимационные ролики, реализованные посредством протокола telnet. Наиболее известным среди них является ASCII-версия IV эпизода космической саги «Звёздные войны»[3][4].
Ссылка
Автор: king_stiven
Дата сообщения: 07.04.2010 13:17

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

Понял наконец, не не должны восстанавливатся, а не должны повторно копироваться.

Цитата:
Скопировать оные в папку E:\in

Так всё таки скопировать или переместить?

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

А зачем? может просто снова попробовать скопировать\перенести этот файл при повторной операции?

Добавлено:
mugil_cephalus
скинь готовый мульт какой нить
Автор: Maikl_relax
Дата сообщения: 07.04.2010 13:26
king_stiven

Цитата:
скинь готовый мульт какой нить

http://www.asciimation.co.nz/
Автор: mugil_cephalus
Дата сообщения: 07.04.2010 13:45
king_stiven

Цитата:
скинь готовый мульт какой нить

меня тогда интересовала теория, на практике я не то что писать, - искать в инете поленюсь
говорю же
Цитата:
нашел случайно этот сабж на википедии


http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1060#21
Автор: king_stiven
Дата сообщения: 07.04.2010 13:50
Maikl_relax
Нда, после HD видео как то уже не комильфо.
Автор: gryu
Дата сообщения: 07.04.2010 14:14
king_stiven

Цитата:
огда папка c:\venta\fax\in распухнет, так как в условиях нет, чтоб из неё хоть что то удалялось.

и хрен с ней.
в кроне висит задача winrar-у раз в неделю паковать все файлы по адресу и стирать пакованные.
Автор: mugil_cephalus
Дата сообщения: 07.04.2010 14:15
king_stiven

Цитата:
как то уже не комильфо.

а после EaaS и автоматизация администрирования будет "как то уже не комильфо"
Автор: gryu
Дата сообщения: 07.04.2010 14:17

Цитата:
Так всё таки скопировать или переместить?
скопировать. первоисточник архивируется "как есть"

Цитата:
А зачем? может просто снова попробовать скопировать\перенести этот файл при повторной операции?
можно. Более того, хотелось бы.
А предупреждение всёравно нужно.
Что бы небыло накладки - факс послали - его в папке нет - опять посылайте - а на самом деле просто что то с сетью.
Автор: king_stiven
Дата сообщения: 07.04.2010 14:25
mugil_cephalus
Меньше чем на интерактивное взаимодействие с компом и голосовым, ну на худой конец пультом управления им я не согласен.
Автор: king_stiven
Дата сообщения: 07.04.2010 16:17
gryu

Код: @echo off
del L:\temp\2.log
if not exist L:\temp\1.log echo z> L:\temp\1.log
for %%a in (L:\temp\*.tif) do (
for /f %%b in ('echo %%~nxa ^| findstr /V /G:"L:\temp\1.log"') do (
copy "%%~fa" s:\temp 1>nul 2>nul
if errorlevel 1 (
echo %%~nxa>> L:\temp\2.log
) else (
echo %%~nxa>> L:\temp\1.log
)
)
)
if exist L:\temp\2.log start "" L:\temp\2.log
Автор: us0r
Дата сообщения: 07.04.2010 18:18
ivn1978
Ковырни утилиту REG, в частности reg export и reg save

Добавлено:
Что и как использовать в батнеге для получения имени/имён активных ip интерфейсов.
Надо получать батником (ну и потом обрабатывать) имя подключения к локальной сети (наприер Подключение к локальной сети 1, 2, LAN01, vLAN01 и т.д. надо получить без кавычек и запихнуть в переменные для дальнейшей обработки).

Попробовал вот это: for /f "tokens=2 delims==" %%n in (netsh interface ip show address | findstr \".*\") do echo %%n
Но в этом варианте не получается обработать кавычки, или ещё какая- то ошибка вылазит...
Автор: wolf0425
Дата сообщения: 07.04.2010 19:44

Цитата:
Это я думал. Места мало. Реально мало. Под факсом живёт древнючий ноут с хардом в 4 гига.
а нафиг нужно место для перекладывания файла с одного места на соседнее в пределах диска? Тем более что это соседнее место у тебя будет периодически чиститься винраром (хотя нафига паковать тиф я не понял - вента несжатые тифы пишет, что-ли?)

строчку кода в первом сообщении предыдущей страницы - видишь?
с учетом замены pdf на tif - это примерно всё что тебе реально было нужно
ну разве что ещё куда-то лог операций пописать, если есть лишнее время на его чтение.

Автор: METAJIJI
Дата сообщения: 07.04.2010 19:51

Цитата:
подскажи, как в твоем варианте при вводе некорректного значения (не соответствующего номеру пункта меню) выдавалась ошибка?

Ну как-то так....

Код: @ECHO OFF
:main
@CLS
::{ Рисуем меню
ECHO.Пункт меню 1
ECHO.Пункт меню 2
ECHO.Пункт меню 3 (Выйти)
ECHO.Пункт меню звездочка [* ]
::{ Рисуем меню

::{ ждем ввода с клавиатуры
SET mainprompt=x && SET /p mainprompt= Выберите пункт меню:
::} ждем ввода с клавиатуры

::{ Проверяем правильность ввода
:_1
IF %mainprompt%==1 (CALL :point) ELSE (GOTO :_2)
:_2
IF %mainprompt%==2 (GOTO :two) ELSE (GOTO :_3)
:_3
IF %mainprompt%==3 (EXIT) ELSE (GOTO :_*)
:_*
IF %mainprompt%==* (GOTO STAR) ELSE (GOTO :ERROR)
::} Проверяем правильность ввода

::{Пример с точкой в батнике
:point
ECHO.Выбрана 1 опция
PAUSE
GOTO :main

:two
ECHO.Выбрана 2 опция
PAUSE
GOTO :main
::}Пример с точкой в батнике

::{выбор по звездочке
:STAR
ECHO.Вы Ввели звездочку
PAUSE
GOTO :main
::}

::{ Ошибка
:ERROR
ECHO.Ошибка ввода!
PAUSE>nul
GOTO :main
::} Ошибка
Автор: Maikl_relax
Дата сообщения: 07.04.2010 21:13

Цитата:
В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)
Мне нужно организовать копирование этих файлов на сетевой диск.

Я чет не понял а штаный Клиент ВентаФаксовский поставить Серетарю никак- там все удобнее гораздо! Также на Серверной чсти можно организовать штано по мылу отправлять ...

king_stiven

Цитата:
Нда, после HD видео как то уже не комильфо.

Аха не цепляет абсолютно... а по телнету вообще тошниловка

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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