Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2

Модерирует : gyra, Maz

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите!
Как сделать проверку %1?
т.е. необходимо проверить использовался ли дополнительный ключ при запуске батника, например "start.bat 1" или "start.bat 2" - если есть то использовать одну процедуру если же нет ключа то другую?
Помогите этот методп впоймать. Меня только хватило на описание всех возможных ключей, а как узнать есть ли он вообще?
 
Добавлено:
И еще один вопросик!
Как автоматизировать очистку лишних пробелов в тхт-файле вида Подробнее....
Пробелы встречаются в основном только в суммах .????

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 11:52 05-03-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kilyan

Код:
 
@Echo Off
 
If "%~1"=="" (
Echo Called without param
)  Else  (
Echo Called with param: %1
)
 

 
Добавлено:
Kilyan

Цитата:
Как автоматизировать очистку лишних пробелов в тхт-файле

Если религия\карма позволяют использовать сторонние утилиты, то можно так:

Код:
 
Sed "s/[ ]\{2,\}/ /g" < test.txt > result.txt
 

Sed можно взять здесь

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:03 05-03-2009
rBBWYwg



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как вывести список поддиректорий определенной папки в чистом виде (каждая поддиректория в отдельной строке, без другой информации, получаемой при выполнении dir FOLDER >list.txt)?

Всего записей: 23 | Зарегистр. 14-10-2008 | Отправлено: 13:51 05-03-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
rBBWYwg

Код:
 
Dir c:\windows /b /s
 

?

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:29 05-03-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
Спасибо-все удачно!
И последний вопрос. Как проверить существование нескольких файлов с разными масками?
Наличие одного файла проверяю if exist <имя файла>
А как проверить сразу три и только в случае наличия всех-что то делать?
Можно ли это сделать компактно?

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 16:45 05-03-2009
rBBWYwg



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
 
Так просто, и так стыдно... Спасибо большое.

Всего записей: 23 | Зарегистр. 14-10-2008 | Отправлено: 17:12 05-03-2009
KYMichael

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka

Код:
 SET "mailer=c:\Program Files\The Bat!\thebat.exe"  

 
Не проходит, та же ошибка
 
igor_andreev

Цитата:
 Да у него скорей всего, как обычно - enabledelayedexpansion в начале батника...  

Так это мне в данном случае тоже нужно.
 
 
Или получается, что использование enabledelayedexpansion не даёт возможности использовать в пути знак "!" ?

Всего записей: 36 | Зарегистр. 25-08-2007 | Отправлено: 18:10 05-03-2009
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KYMichael
disabledelayedexpansion сделай перед SET и отправкой почты.  

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 19:06 05-03-2009
KYMichael

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev

Цитата:
disabledelayedexpansion сделай перед SET и отправкой почты.

Ур-р-а-а! Заработало!
Спасибо!
 
P.S. рановато я обрадовался, теперь The Bat вызывается, но он чихать хотел на параметры переданные ему при вызове
 
Но это уже не сюда Вопрос
(главное с "!" решилось, ещё раз спасибо!)
 
 
 

Всего записей: 36 | Зарегистр. 25-08-2007 | Отправлено: 20:56 05-03-2009
BorlandIMHO

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как проверить существование нескольких файлов с разными масками?  
Наличие одного файла проверяю if exist <имя файла>  
А как проверить сразу три и только в случае наличия всех-что то делать?  
Можно ли это сделать компактно?


Код:
for %%N in (file1.ex1 file2.ex2 file3.ex3) do if not exist %%N exit
REM дальше то, что должно выполняться при наличии всех трёх файлов


----------
http://www.imho.ws

Всего записей: 2442 | Зарегистр. 12-10-2006 | Отправлено: 22:20 05-03-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Все бы хорошо, но нужно б еще вывести каких файлов не хватает.  
неплохо былобы как то с такой конструкцией

Цитата:
 
If "%~1"=="" (  
Echo Called without param
)  Else  (  
Echo Called with param: %1
)

Чтоб можно в двух вариациях что то сделать!

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 23:53 05-03-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kilyan

Цитата:
неплохо былобы как то с такой конструкцией

Так сделайте! Вам же показали:

Код:
 
@Echo Off
 
for %%N in (file1.ex1 file2.ex2 file3.ex3) do (
  if not exist %%N (
  Echo File: %%N is not exists
  ) Else (
  Echo File: %%N is exists
  )
)
 


Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:45 06-03-2009
NvvLazyTiger



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilya
Цитата:
Как проверить существование нескольких файлов с разными масками?  
Наличие одного файла проверяю if exist <имя файла>  
А как проверить сразу три и только в случае наличия всех-что то делать?  
Можно ли это сделать компактно?

Цитата:
нужно б еще вывести каких файлов не хватает.  

Например можно сделать так:
Код:
@echo off
:: NoTot счётчик отсутствующих файлов
set NoTot=0  
:: NoFil перечень отсутствующих файлов
set NoFil=  
 
:: перебор элементов заданного перечня
for %%a in ( "f i l e 1 .  e x 1" file2.ex2 file3.ex3 ) do call :ChkFile %%a  
 
:: если всё в порядке - делаем то, что нужно
if %NoTot% == 0 goto IfAllOk  
 
:: если чего-то нет - известим о факте
echo ! Missed %NoTot% file(s) [%NoFil% ]  
goto :eof  
 
:ChkFile проверка наличия, учёт отсутствия файла
if exist %1 goto :eof  
:: если файла нет, запомним имя и увеличим счётчик
set NoFil=%NoFil% %1  
set /a NoTot=%NoTot%+1  
goto :eof  
 
:IfAllOk действия при наличии всех файлов из списка
 

NB. Имена файлов с пробелами нужно указывать в двойных кавычках.
BTW На производстве компактность в ущерб простоте и наглядности, как правило, усложняет ремонт при авариях. Иногда - очень сильно [усложняет]...

Всего записей: 262 | Зарегистр. 14-02-2009 | Отправлено: 08:32 06-03-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NvvLazyTiger
Как раз то что нужно! спасиб.

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 08:43 06-03-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть ftp , с него качаю файлы все подряд.
надо делать выборку по датам или по времени изменения и перенаправить самые свежие в текстовый файл, а затем этот текстовый файл передать команде mget  
 
Помогите в написании!

Всего записей: 1468 | Зарегистр. 28-10-2007 | Отправлено: 09:28 06-03-2009 | Исправлено: vitrzn, 09:34 06-03-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vitrzn
Не проще ли воспользоваться wget?

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:48 06-03-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka

Цитата:
Не проще ли воспользоваться wget?

 
БУМ юзать !
СПС за совет !!!

Всего записей: 1468 | Зарегистр. 28-10-2007 | Отправлено: 09:59 06-03-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите найти ошибку!?

Код:
SET i_month=""
if "%~1"=="" ( goto :IfAllOk ) else (
(set /A param = "%~1" ) & call :Chkparam %param%
)
:Chkparam проверка параметра
if %1 LSS 10 (Set i_month=0%param) else (set i_month=%1)
 
:IfAllOk  
Echo %i_month%
pause

Необходимо проверить ключ(если он меньше нуля то числовой ключ представить с нулем впереди!)

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 13:41 06-03-2009 | Исправлено: Kilyan, 13:43 06-03-2009
NvvLazyTiger



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilyan
Цитата:
Помогите найти ошибку!?

Зачем так сложно? (в тексте минимум одна ошибка - п/п :Chkparam не завершается оператором `goto :eof`)
Проще сделать так:
Код:
SET i_month=%1
:: если параметра нет, сразу идём на метку
if NOT defined i_month goto IfAllOk
:: если в параметре один символ - приписываем слева цифру "0"
if %i_month:~1%. == . set i_month=0%1
 
:IfAllOk  
if defined i_month (echo %i_month%) else (echo NO params!)
pause
NB. Конструкция `%~1` убирает лишь обрамляющие двойные кавычки. Т.е. если таковые есть внутри, или, если параметр отличается от 1..12, то могут быть интересные результаты... ;)
 
А вот в эту конструкцию:
Цитата:
Необходимо проверить ключ(если он меньше нуля то числовой ключ представить с нулем впереди!)
я "въехать" не смог. Может быть таки - "ключ меньше 10" (судя по тексту примера, т.е. 1..9)?  
 
Вдогонку. Можно нейтрализовывать отрицательные значения [первого параметра], можно принимать ТОЛЬКО цифры 1..12. Много чего можно [делать]... А нужно-то таки что?

Всего записей: 262 | Зарегистр. 14-02-2009 | Отправлено: 14:53 06-03-2009 | Исправлено: NvvLazyTiger, 15:07 06-03-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
можно принимать ТОЛЬКО цифры 1..12

А интересно как это?

Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 15:18 06-03-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru