wolf0425 кликом мыши или вводом с клавиатуры. ( эксплорере. Не в ФАР или другом альтарнативном менеджере. )
» Задачи на bat-файлах 8
king_stiven, ещё раз спасибо за блок обработки времени..
Вот только я не понял как его ограничить.
Если весь код батника представляет данный блок, то всё работает,
но нужно после этого блока ещё команды дописывать и передним тоже нужно, а он каждый раз "сверху вниз" гонит.
Как то это через goto делается... не могу сообразить как.
Мне нужно к примеру
f %errorlevel% LEQ 5 echo %fgh% created 5 min >nul | goto:error
Да и перед этим блоком тоже койчего писать нужно.
Добавлено:
ivn1978
Цитата:
set /p ts="вам кого? y/n: "
if not definded ts goto:error
if %ts%==y goto:yes
if %ts%==n goto:no
:yes
бла -бла -бла
:no
бла бла бла
:error
бла бла бла
Вот только я не понял как его ограничить.
Если весь код батника представляет данный блок, то всё работает,
но нужно после этого блока ещё команды дописывать и передним тоже нужно, а он каждый раз "сверху вниз" гонит.
Как то это через 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
бла бла бла
Цитата:
кликом мыши или вводом с клавиатуры. ( эксплорере.странно это - из эксплорера или cmd у меня запускается нормально. XP SP3
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.
Цитата:
да
вот я в консоли ввел такие команды
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 и с этой уже работает.
это число строк как раз и указывается в скипе...насколько я сейчас понимаю.
да
wolf0425
Цитата:
А вот ещё такой вопрос.
в некоторых случаях ругается chcp - не является командой... что то типа такого.
Расширенную командную строку включаю.
Цитата:
из эксплорера или cmd у меня запускается нормально.
А вот ещё такой вопрос.
в некоторых случаях ругается chcp - не является командой... что то типа такого.
Расширенную командную строку включаю.
gryu
Цитата:
вот так
if %errorlevel% LEQ 5 goto:error
Цитата:
Навпиши в виде задачи, что надо, а не словами и ссылками.
Цитата:
Мне нужно к примеру
if %errorlevel% LEQ 5 echo %fgh% created 5 min >nul | goto:error
вот так
if %errorlevel% LEQ 5 goto:error
Цитата:
Вот только я не понял как его ограничить.
Если весь код батника представляет данный блок, то всё работает,
но нужно после этого блока ещё команды дописывать и передним тоже нужно, а он каждый раз "сверху вниз" гонит
Навпиши в виде задачи, что надо, а не словами и ссылками.
Кстати о решении
Цитата:
На 2000-ке не работает.
2000-к не знает команды "reg"
Добавлено:
king_stiven
Цитата:
Пишу.
В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)
Мне нужно организовать копирование этих файлов на сетевой диск.
На этом сетевом диске есть доступ секретарю, которая сортирует файлы в ручную. Что то удаляет, что то сохраняет.
а. нужно что бы удалённые ею файлы не восстанавливались.
б. в случае ошибка записи (малоли что, всё же сетевой ресурс, а не локальный) вывыодилась ошибка/предупреждение.
-------------------------------------------------
В идеале время ошибки запоминалось в переменную и вносилось бы в строку копирования в следующий раз... (это фантазии. я ещё всё не до конца это продумал).
Варианты решения я разные рассматривал.
В том числе копирование файлов с последующим переносом их в другую папку(пункт а)
Цитата:
REG ADD HKCU\Consoleдля включения шрифта в консоли.
На 2000-ке не работает.
2000-к не знает команды "reg"
Добавлено:
king_stiven
Цитата:
Навпиши в виде задачи, что надо, а не словами и ссылками.
Пишу.
В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)
Мне нужно организовать копирование этих файлов на сетевой диск.
На этом сетевом диске есть доступ секретарю, которая сортирует файлы в ручную. Что то удаляет, что то сохраняет.
а. нужно что бы удалённые ею файлы не восстанавливались.
б. в случае ошибка записи (малоли что, всё же сетевой ресурс, а не локальный) вывыодилась ошибка/предупреждение.
-------------------------------------------------
В идеале время ошибки запоминалось в переменную и вносилось бы в строку копирования в следующий раз... (это фантазии. я ещё всё не до конца это продумал).
Варианты решения я разные рассматривал.
В том числе копирование файлов с последующим переносом их в другую папку(пункт а)
ivn1978
Цитата:
запусти батник в консоли и не вылетит
Цитата:
ммм.. не работает что то. вылетает скрипт и все. хотя пауза в конце стоит
запусти батник в консоли и не вылетит
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
Цитата:
В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)постановка какая-то некачественная.
Мне нужно организовать копирование этих файлов на сетевой диск.
На этом сетевом диске есть доступ секретарю, которая сортирует файлы в ручную. Что то удаляет, что то сохраняет.
а. нужно что бы удалённые ею файлы не восстанавливались.
б. в случае ошибка записи (малоли что, всё же сетевой ресурс, а не локальный) вывыодилась ошибка/предупреждение.
1. вывод ошибки записи тебе наверно не очень нужен - нужно повторение неудачного копирования на следующем проходе, после восстановления связи.
2. чтоб удаленные файлы не восстанавливались - надо их просто повторно не копировать.
Для этого после успешного копирования файла в сетевую папку надо его удалить из входной (куда факс складывает) - напрочь или в архив переместить. Ну или список скопированного вести и сверяться с ним перед копированием.
как-то так:
Код: for %%a in (c:\fax_in\*.pdf) do copy "%~fa" \\server\faxex\ && move "%~fa" c:\fax_old\
gryu
да очень расплывчато, и опять словами, вроде в школе математику учили.
да очень расплывчато, и опять словами, вроде в школе математику учили.
ivn1978
Цитата:
Добавлено:
king_stiven
Цитата:
Учил. В школе. И не только. Давно. Последний раз "учил математику" году этак в 1989.
Там правда уже не математика была.
Цитата:
@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.
Там правда уже не математика была.
ivn1978
Цитата:
Если хочешь при двойном клике по батнику, то
правильней будет так:
Код:
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 регистр букв!
Цитата:
Непредвиденное появление: 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 регистр букв!
gryu
Дано :
в папку c:\temp упало n файлов file1 file2 file3 ... filen (на момент выполнения первой операции)
Надо...(скопировать?перенести?) эти файлы в \\server\faxex\
...
Предположим файл file3 не скопировался...тогда надо...
...
в папку c:\temp упала следущая порция ....
...
и т д
Дано :
в папку c:\temp упало n файлов file1 file2 file3 ... filen (на момент выполнения первой операции)
Надо...(скопировать?перенести?) эти файлы в \\server\faxex\
...
Предположим файл file3 не скопировался...тогда надо...
...
в папку c:\temp упала следущая порция ....
...
и т д
кстати. как очистить кешь переменной %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
Цитата:
А бэкапить в сеть, та же проблема.
Проблему бэкапа решают cron + WinRAR.
Запуск батника на копирование, тоже по cron-у
а то последняя переменная запоминается и 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-у
gryu
тогда папка c:\venta\fax\in распухнет, так как в условиях нет, чтоб из неё хоть что то удалялось.
тогда папка c:\venta\fax\in распухнет, так как в условиях нет, чтоб из неё хоть что то удалялось.
01MDM
NIKZZZZ
и другим
по вопросу анимации в батниках из Задачи на bat-файлах 7
нашел случайно этот сабж на википедии - вот
ASCII art
ASCII-анимация
ASCII-анимация является одним из направлений ASCII-арта. В этом направлении рисуются наборы ASCII-картинок, при пролистывании которых получаются мультфильмы. Обычно высота картинки выбирается равной стандартной высоте программы просмотрщика текста, под которую он оптимизируется. При этом смена кадров производится нажатием клавиши Page Down.
Также на PC в среде DOS возможен вывод ASCII-анимации из BAT-файлов через драйвер ANSI.SYS с использованием Esc-последовательностей. Этот метод не получил широкого распространения из-за того, что он требует загрузки драйвера, который редко используется по назначению и занимает место в памяти.
Известны также анимационные ролики, реализованные посредством протокола telnet. Наиболее известным среди них является ASCII-версия IV эпизода космической саги «Звёздные войны»[3][4].
Ссылка
NIKZZZZ
и другим
по вопросу анимации в батниках из Задачи на bat-файлах 7
нашел случайно этот сабж на википедии - вот
ASCII art
ASCII-анимация
ASCII-анимация является одним из направлений ASCII-арта. В этом направлении рисуются наборы ASCII-картинок, при пролистывании которых получаются мультфильмы. Обычно высота картинки выбирается равной стандартной высоте программы просмотрщика текста, под которую он оптимизируется. При этом смена кадров производится нажатием клавиши Page Down.
Также на PC в среде DOS возможен вывод ASCII-анимации из BAT-файлов через драйвер ANSI.SYS с использованием Esc-последовательностей. Этот метод не получил широкого распространения из-за того, что он требует загрузки драйвера, который редко используется по назначению и занимает место в памяти.
Известны также анимационные ролики, реализованные посредством протокола telnet. Наиболее известным среди них является ASCII-версия IV эпизода космической саги «Звёздные войны»[3][4].
Ссылка
Цитата:
а. файлы в сетевой папке сортируются и в случае их удаления не должны восстанавливатся.
Понял наконец, не не должны восстанавливатся, а не должны повторно копироваться.
Цитата:
Скопировать оные в папку E:\in
Так всё таки скопировать или переместить?
Цитата:
б. при проблеме записи нужно получить уведомление.
А зачем? может просто снова попробовать скопировать\перенести этот файл при повторной операции?
Добавлено:
mugil_cephalus
скинь готовый мульт какой нить
king_stiven
Цитата:
меня тогда интересовала теория, на практике я не то что писать, - искать в инете поленюсь
говорю же
Цитата:
http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1060#21
Цитата:
скинь готовый мульт какой нить
меня тогда интересовала теория, на практике я не то что писать, - искать в инете поленюсь
говорю же
Цитата:
нашел случайно этот сабж на википедии
http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1060#21
Maikl_relax
Нда, после HD видео как то уже не комильфо.
Нда, после HD видео как то уже не комильфо.
king_stiven
Цитата:
и хрен с ней.
в кроне висит задача winrar-у раз в неделю паковать все файлы по адресу и стирать пакованные.
Цитата:
огда папка c:\venta\fax\in распухнет, так как в условиях нет, чтоб из неё хоть что то удалялось.
и хрен с ней.
в кроне висит задача winrar-у раз в неделю паковать все файлы по адресу и стирать пакованные.
king_stiven
Цитата:
а после EaaS и автоматизация администрирования будет "как то уже не комильфо"
Цитата:
как то уже не комильфо.
а после EaaS и автоматизация администрирования будет "как то уже не комильфо"
Цитата:
Так всё таки скопировать или переместить?скопировать. первоисточник архивируется "как есть"
Цитата:
А зачем? может просто снова попробовать скопировать\перенести этот файл при повторной операции?можно. Более того, хотелось бы.
А предупреждение всёравно нужно.
Что бы небыло накладки - факс послали - его в папке нет - опять посылайте - а на самом деле просто что то с сетью.
mugil_cephalus
Меньше чем на интерактивное взаимодействие с компом и голосовым, ну на худой конец пультом управления им я не согласен.
Меньше чем на интерактивное взаимодействие с компом и голосовым, ну на худой конец пультом управления им я не согласен.
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
Код: @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
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
Но в этом варианте не получается обработать кавычки, или ещё какая- то ошибка вылазит...
Ковырни утилиту 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
Но в этом варианте не получается обработать кавычки, или ещё какая- то ошибка вылазит...
Цитата:
Это я думал. Места мало. Реально мало. Под факсом живёт древнючий ноут с хардом в 4 гига.а нафиг нужно место для перекладывания файла с одного места на соседнее в пределах диска? Тем более что это соседнее место у тебя будет периодически чиститься винраром (хотя нафига паковать тиф я не понял - вента несжатые тифы пишет, что-ли?)
строчку кода в первом сообщении предыдущей страницы - видишь?
с учетом замены pdf на tif - это примерно всё что тебе реально было нужно
ну разве что ещё куда-то лог операций пописать, если есть лишнее время на его чтение.
Цитата:
подскажи, как в твоем варианте при вводе некорректного значения (не соответствующего номеру пункта меню) выдавалась ошибка?
Ну как-то так....
Код: @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
::} Ошибка
Цитата:
В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)
Мне нужно организовать копирование этих файлов на сетевой диск.
Я чет не понял а штаный Клиент ВентаФаксовский поставить Серетарю никак- там все удобнее гораздо! Также на Серверной чсти можно организовать штано по мылу отправлять ...
king_stiven
Цитата:
Нда, после HD видео как то уже не комильфо.
Аха не цепляет абсолютно... а по телнету вообще тошниловка
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
Предыдущая тема: XP не видит второй раздел на съемном USB-HDD
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.