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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
 
 
Старая версия первого сообщения

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AntonRNB
Посмотри хорошую маленькую программу без оболочки Sender http://home.comset.net/panoff/soft , которая позволяет из командной строки посылать email.
 
tumber
Я нашел способ. Программку маленькую Silence Start, которая может скрыть запуск любого файла http://zfs.lg.ua/serg_gm/rus/sstart_readme.htm .
 
Silence Start - analogue of standard program/command 'start', but can run program in minimized window without lost current focus, in always on top and hide window (also in C-A-D-list in Win95/98)
 
Только глюк у неё в XP есть (на других ОС не проверял). Если во время её работы юзер начинает перезагружать комп или выключать нормально, не по кнопке на корпусе, то она иногда выдает ошибку, что некорректно завершила работу. Про это и сам автор пишет.
В остальном вроде хорошая.
 
А start /m где писать? Это я понимаю в батнике пишется для запуска другой программы. А мне надо скрыто запустить батник из планировщика.
 
Добавлено
Что в этом батнике с выдеранием до сотых долей секунды неправильно:

Код:
@echo off
for /f "tokens=1,2,3 delims=." %%i in ("%DATE%") do for /f "tokens=1,2 delims=:" %%l in ("%TIME%") do for /f "tokens=3,4 delims=," %%n in ("%TIME%") do copy /y "C:\path\*.tmp" "C:\tmp\%%i-%%j-%%k_%%l-%%m-%%n-%%o.tmp" >> "C:\tmp\stat.log"

 
И как сделать:  
в папке-источнике файлы "name1.xxx","name2.yyy","name3.zzz" и т.п.
Надо в батнике в имена файлов перед расширением вставить дату со временем до долей секунды, чтобы получилось примерно "name1_15-08-2003_15-42-10-35.xxx", "name1_15-08-2003_15-42-10-45.yyy", "name1_15-08-2003_15-42-10-55.zzz" и далее скопировать в другую папку, наверное, как-то по циклу для всех файлов, которые будут находиться в тот момент в папке-источнике.

Всего записей: 3187 | Зарегистр. 27-09-2001 | Отправлено: 13:43 15-08-2003 | Исправлено: exMIB, 15:50 15-08-2003
tumber

Друг
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
exMIB
Вот это делает то, что нужно:
 
@echo off
dir /b "c:\path" > dir.txt
for /f "tokens=1,2 delims= " %%g in ("%DATE%") do for /f "tokens=1,2,3 delims=." %%i in ("%%h") do for /f "tokens=1,2,3 delims=:" %%l in ("%TIME%") do for /f "tokens=1,2 delims=," %%o in ("%%n") do for /f "tokens=1,2 delims=." %%q in (dir.txt) do copy "C:\path\%%q.%%r" "C:\tmp\%%q_%%k-%%j-%%i_%%l-%%m-%%o-%%p.%%r" > nul
del dir.txt
 
При желании dir.txt можно не удалять, а добавить в лог.
 
Добавлено

Цитата:
А start /m где писать? Это я понимаю в батнике пишется для запуска другой программы. А мне надо скрыто запустить батник из планировщика.

В свойствах задания. У меня в W2000 так:
Выполнить: C:\WINNT\Command\Start.exe /m D:\path2bat\rezerv.bat
Правда, это не помогло, окно все равно мелькает.

Всего записей: 2613 | Зарегистр. 13-09-2002 | Отправлено: 17:04 15-08-2003
exMIB



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tumber
У меня в XP нет файла Start.exe совсем нигде.
Какие ещё варианты для скрытия батника, кроме моего про который я выше написал?
Или он единственный?
А вот файлы *.vbs как запускаются? Скрытно или заметно?

Всего записей: 3187 | Зарегистр. 27-09-2001 | Отправлено: 21:14 15-08-2003
exMIB



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tumber
Спасибо за идею. Теперь работает, только я немного исправил. В твоем коде ошибка с датой была.
 
Теперь осталось узнать: как средствами ОС скрыть запуск батника
Или может у кого есть аналог Silence Start, про который я вверху писал, чтобы без глюков.
 
И ещё про одну проблему - это выключение компа с XP через батник и планировщик.
Команду shutdown и её параметры я знаю.
Но вот как быть если планировщик не хочет этот батник запускать, пока не был сделан вход пользователя в систему, т.е. до окна Приветствия, когда планировщик работает в режиме сервиса.  
Вроде бы он может работать как служба.

Всего записей: 3187 | Зарегистр. 27-09-2001 | Отправлено: 02:30 17-08-2003
tumber

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

Цитата:
как средствами ОС скрыть запуск батника

Вот это частично решает проблему:
 
1. В папке, где находится батник, создается ярлык для него.
2. В свойствах ярлыка указывается
   Окно: Свернутое в значок.
3. В планировщике в свойствах задания пишется примерно так:
   Выполнить: D:\path2bat\Ярлык_rezerv.bat.lnk
 
В результате мелькание только в панели задач, а на рабочем столе мелькания нет.
По остальным вопросам - не знаю.

Всего записей: 2613 | Зарегистр. 13-09-2002 | Отправлено: 12:02 18-08-2003
AntonRNB



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
exMIB
Спасибо!
Это то, что нужно!

Всего записей: 52 | Зарегистр. 17-04-2003 | Отправлено: 13:20 18-08-2003
exMIB



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tumber
А теперь понятно, я так делал, но в планировщике указывал расширение D:\path2bat\Ярлык_rezerv.lnk, из-за этого и не работало.
 
Но для полного скрытия значит пока остается только Silence Start

Всего записей: 3187 | Зарегистр. 27-09-2001 | Отправлено: 13:57 18-08-2003
ironwit

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
такой вопрос.
 
Как средствами комстроки и архиватора просмотреть каталог с подкаталогами и все файлы с расширением txt заархивировать в файл с именем равным имени txt файла и расширением равным архиву(то есть zip,rar...).
 
После этого удалить  txt файлы.
 
Заранее спасибо.
 
P.S. да еще если бы консольную программу проверки кодировки txt файла и если он не win то автоматом перекодировать...

----------
Don't drink, and drive. Smoke and fly.

Всего записей: 1892 | Зарегистр. 11-10-2002 | Отправлено: 09:19 18-09-2003
MetroidZ



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

Цитата:
Как средствами комстроки и архиватора просмотреть каталог с подкаталогами и все файлы с расширением txt заархивировать в файл с именем равным имени txt файла и расширением равным архиву(то есть zip,rar...).  
 
После этого удалить  txt файлы.  

если есть Winrar то там есть реадми из которого ты узнаешь, как это сделать.
 

Цитата:
как средствами ОС скрыть запуск батника  

в батнике прямо пишется какая то строка (забыл, поищу если никто не найдёт).

Всего записей: 1795 | Зарегистр. 12-07-2003 | Отправлено: 10:09 18-09-2003
ironwit

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

Цитата:
если есть Winrar то там есть реадми из которого ты узнаешь, как это сделать.  

громадное тебе спасибо, прям не знаю чтобы без тебя делал.
 
1. Winrar у меня нет, использую только 7zip или pkzip  
2. Даже если бы и был и я его прочитал, то все равно это не то. Я уже когда то так пробовал. Он может это делать только по одному каталогу зараз. а мне нужно ОЧЕНЬ большое кол-во прогнать.
 
Поэтому вопрос остается в силе.

----------
Don't drink, and drive. Smoke and fly.

Всего записей: 1892 | Зарегистр. 11-10-2002 | Отправлено: 10:31 18-09-2003
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ironwit
К Winzip нужно качать приблуду, которая даст консольный интерфейс.
 

Цитата:
Даже если бы и был и я его прочитал, то все равно это не то. Я уже когда то так пробовал. Он может это делать только по одному каталогу зараз. а мне нужно ОЧЕНЬ большое кол-во прогнать.

Внимательно читал?
RAR -?  
rar <command> -<switch 1> -<switch N> <archive> <files...> <@listfiles...>  
 
на <@listfiles...> команду обращал внимание?
на r             Recurse subdirectories
    r0            Recurse subdirectories for wildcard names only
    df            Delete files after archiving
переключатели тоже?
 

Всего записей: 2062 | Зарегистр. 08-05-2002 | Отправлено: 11:13 18-09-2003
ironwit

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vserd
осознал, каюсь. Читаю...
 
P.S. но задача универсально (не зависимо от архиватора) все равно не решена
 
Добавлено
да, но
 
как указать rar чтобы он архивировал один файл в один архив?

----------
Don't drink, and drive. Smoke and fly.

Всего записей: 1892 | Зарегистр. 11-10-2002 | Отправлено: 14:29 18-09-2003
tumber

Друг
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ironwit
Прием стандартный, он в этом топике уже использовался. Пишем список файлов в dir.txt, а потом оттуда читаем и обрабатываем по отдельности каждый файл. Например, вот так:
 
dir D:\WORK\*.txt /B /S > dir.txt
for /f "tokens=1,2 delims=." %%a in (dir.txt) do C:\PROGRA~1\WINRAR\rar.exe a -ep  "%%a" "%%a.%%b"
for /f "tokens=1,2 delims=." %%a in (dir.txt) do del "%%a.%%b"
del dir.txt
 
Этот пример работает, если в полном имени архивируемого файла, вместе с путем к нему, есть одна, и только одна точка - перед расширением.

Всего записей: 2613 | Зарегистр. 13-09-2002 | Отправлено: 16:59 18-09-2003 | Исправлено: tumber, 17:08 18-09-2003
ironwit

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

----------
Don't drink, and drive. Smoke and fly.

Всего записей: 1892 | Зарегистр. 11-10-2002 | Отправлено: 08:20 19-09-2003
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ironwit
Ну тогда воспользуйся такой командой
dir *.txt  /B /S > dir.tx1
for /f  %%a in (dir.tx1) do Вызов архиватора  
:)))
Это построено в предположении что в dir.txt находятся файлы с расширением тхт  

Цитата:
P.S. но задача универсально (не зависимо от архиватора) все равно не решена

Я сомневаюсь что ее можно решить универсально.
Хотя батник запросто можно написать универсально, чтобы изменения свести к миниму.  

Всего записей: 2062 | Зарегистр. 08-05-2002 | Отправлено: 11:17 19-09-2003
tumber

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

Цитата:
а если есть?

Если есть еще точки - то мне придумать не удается.

Всего записей: 2613 | Зарегистр. 13-09-2002 | Отправлено: 13:02 19-09-2003
ironwit

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vserd
Блин, теперь она выдает полные имена файлов. Вместе с расширением. И соответственно rar выдает что не может создать архив.

----------
Don't drink, and drive. Smoke and fly.

Всего записей: 1892 | Зарегистр. 11-10-2002 | Отправлено: 13:08 19-09-2003
tumber

Друг
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ironwit
Расширение в варианте vserd обрезать можно:
 
dir D:\WORK\*.txt /B /S > dir.txt
for /f %%A in (dir.txt) do C:\PROGRA~1\WINRAR\rar.exe a -ep "%%~dpnA" "%%A"
 
Тут проблема с возможными пробелами в именах файлов/папок. Переменная A обрезается на первом пробеле, и побороть это у меня не получается.

Всего записей: 2613 | Зарегистр. 13-09-2002 | Отправлено: 14:15 19-09-2003 | Исправлено: tumber, 14:18 19-09-2003
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ironwit
Если тебя устроит вариант имен файлов вида MyFile.txt.rar тогда напиши C:\PROGRA~1\WINRAR\rar.exe a -ep "%%A.rar" "%%A"  
или .zip если хочешь создавать zip-файлы
 
Если нет, читай дальше :))
 
tumber

Цитата:
Тут проблема с возможными пробелами в именах файлов/папок. Переменная A обрезается на первом пробеле, и побороть это у меня не получается.  

 
Обрати внимание на delims, если его задать таким, что он является недопустимым в полных именах файлов (например *), то будут выделяться полные строки вместе с пробелами:
 
for /f "delims=*" %%A in (dir.txt) do echo "%%~dpnA.rar"
 
У команды for,  на удивление, хорошая подсказка :))

Всего записей: 2062 | Зарегистр. 08-05-2002 | Отправлено: 14:55 19-09-2003
tumber

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

Цитата:
У команды for,  на удивление, хорошая подсказка )

Согласен, сам внимательно ее изучал.

Цитата:
Обрати внимание на delims, если его задать таким, что он является недопустимым в полных именах файлов (например *), то будут выделяться полные строки вместе с пробелами:  

А вот до этого я не додумался, тупой
Просто, как все гениальное

Всего записей: 2613 | Зарегистр. 13-09-2002 | Отправлено: 15:19 19-09-2003 | Исправлено: tumber, 15:21 19-09-2003
   

Страницы: 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru