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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118

   

KLASS



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

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

Всего записей: 11113 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
Accessor



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
вот:
@echo off
rar a test c:\*.txt
set err=%errorlevel%
if err 1 goto error
echo Архивация завершилась успешно
goto end
:error
echo Ошибка арзивации
:end

Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 10:42 22-08-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Accessor
Измени строку  
if err 1 goto error
на  if %err%== 1 goto error

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:26 22-08-2006
m a x

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

Код:
@echo off  
rar a test c:\*.txt  
if errorlevel 1 goto error  
echo Архивация завершилась успешно  
goto end  
:error  
echo Ошибка арзивации  
:end

А еще лучше так

Код:
@echo off  
rar a test c:\*.txt  
if errorlevel = 1 (echo Ошибка архивации) else echo Архивация завершилась успешно
:end

Всего записей: 652 | Зарегистр. 31-05-2002 | Отправлено: 11:33 22-08-2006
Accessor



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Спасибо, так заработало, но есть еще вопрос. Я немного видоизменил командный файл, и хочу чтобы код ошибки РАРа записывался в лог архивации:
@echo off
rar a test c:\*.txt
set err=%errorlevel%
if %err%==1 goto error
echo Архивация завершилась успешно>>log.txt
echo %err%>>log.txt
goto end
:error
echo Ошибка архивации>>log.txt
echo %err%>>log.txt
:end
 
код ошибки почему-то не попадает в log.txt
 
Добавлено:
значение переменной %err% не попадает в логи, а если заменить %err% на %date% или на %time% то дата/время будут прекрасно записываться в лог
непонятно как такое победить ?

Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 12:32 22-08-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Accessor
Пробелы поставь

Код:
echo %err% >>log.txt

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:53 22-08-2006
Accessor



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Спасибо, работает, но как объяснить, что в случае с %date% и %time% пробел не нужен, а в случае с %err% он уже становится архинеобходим

Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 13:14 22-08-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Accessor
БМП (без малейшего понятия)
Просто давным давно у меня вошло в привычку отделять символы перенаправления пробелами

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:33 22-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Accessor
Echo вообще как-то странно ведёт себя в батниках..
 
к примеру, такой бат-файл

Код:
echo str >>456.txt  

выводит на экран следующую строку:
echo str  1>>456.txt
Откуда здесь единица, спрашивается???
В файл 456.txt при этом записано
str
 
Ну а с числами - еще интереснее
 
А в данном случае %err% - именно число, а %date% и %time% - символьные строки.

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 15:50 22-08-2006 | Исправлено: Kirillhome, 15:50 22-08-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Accessor
разобрался с этим глюком, благодоря посту Kirillhome
 
Echo str 2>>text.txt - выводит в text.txt - сообщения о ошибках (в данном случае ничего)
Echo str 1>>text.txt - выводит в text.txt - стандартный вывод (в данном случае str)
 
dir a:>c:\file.txt 2>&1, перенаправляет в файл c:\file.txt, как стандартный поток (листинг дискеты), так и сообщения о ошибках (если дискета не вставлена)
Т.е перенаправляет поток ошибок STDERR в стандартный поток

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:07 22-08-2006 | Исправлено: KapralBel, 16:10 22-08-2006
Refugee

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Перед > >> | можно указывать номера потоков.
1 - это номер потока стандартного вывода (stdout), по умолчанию для >> >
prog 2>>file значит отправить в файл то, что выведет прога на stderr

Всего записей: 513 | Зарегистр. 31-03-2004 | Отправлено: 16:08 22-08-2006
4eszxdr5

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Запускаю из батника (последняя строка) програму таким образом:
"D:\Program Files\EmEditor\EmEditor.exe"
запуск происходит, но при этом окно консоли cmd сворачивается в панель задач и висит там до тех пор, пока не закрою запущенную батником программу.
Как сделать, чтобы окно консоли закрывалось сразу после запуска программы (программа оставалась, а консольное окно закрывалось)?

Всего записей: 256 | Зарегистр. 28-01-2005 | Отправлено: 11:56 23-08-2006
m a x

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4eszxdr5
start /d"D:\Program Files\EmEditor\" EmEditor.exe

Всего записей: 652 | Зарегистр. 31-05-2002 | Отправлено: 12:39 23-08-2006
Gatti

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
 
Вопрос наверно ламерский, но все же хотелось бы знать, почему введя в командной строке последовательно:
set var=d:\вася пупкин
echo %var%  
Получаю  
d:\вася пупки
Набрав эти тоже самое в блокноте и сохранив как test.bat при запуске получаю
d:\всякие кракозябры ?

Всего записей: 93 | Зарегистр. 24-12-2005 | Отправлено: 14:07 31-08-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Gatti
Потому что консоль работает в кодировке 866
А блокнот сохраняет в 1251

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:31 31-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Gatti
В блокноте в первой строке
chcp 1251

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 14:35 31-08-2006
tedhome

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VBS. Народ, подскажите Pls как из текстового файла выводить в новый файл текст определенного номера строки. Пока получилось только выводить последнюю строчку в тексте.  
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("work.txt", 1)
Do Until objTextFile.AtEndofStream  
strNextLine = objTextFile.Readline
arrServiceList = Split(strNextLine, ",")
k = arrServiceList (0)
For i=1 to Ubound(arrServiceList)
k = arrServiceList (i)
Next
Loop
Set f = objFSO.OpenTextFile("edit.txt", 2, True)
f.write k
f.close
objTextFile.close

Всего записей: 23 | Зарегистр. 01-09-2006 | Отправлено: 14:16 05-09-2006
KapralBel



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

Код:
@Echo Off
Set A=0
For /F %%a In (R) Do Call :Lab1 %%a
GoTo :EOF
 
:Lab1
Set /A A=%A%+1
If %A% == 5 Echo %1 >>rr
GoTo :EOF
 

Выводит 5-ю строку из файла r в файл rr

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:28 05-09-2006
tedhome

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо! но выводит только первое слово. Если же в строке есть пробелы то тогда будет только первое слово. А нужно чтоб всю строку целиком. Это как-то можно разрешить?

Всего записей: 23 | Зарегистр. 01-09-2006 | Отправлено: 16:15 05-09-2006
KapralBel



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

Код:
@Echo Off
Set A=0
For /F "delims=$" %%a In (R) Do Call :Lab1 "%%a"
GoTo :EOF
 
:Lab1
Set st=%1
Set ST=%ST:~1%
Set ST=%ST:~0,-1%
Set /A A=%A%+1
If %A% == 5 Echo %st%>>rr
GoTo :EOF

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:39 05-09-2006
tedhome

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасиба огроменное!

Всего записей: 23 | Зарегистр. 01-09-2006 | Отправлено: 09:00 07-09-2006
   

Страницы: 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 109 110 111 112 113 114 115 116 117 118

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru