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

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

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

Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

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

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
Rushmore



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

Цитата:
Как можно дополнить этот батник, чтобы он после окончания копирования проверял наличие в оперативке процесса cons.exe и ждал его окончания и потом запускал то что после pause и соот. если этого процесса cons.exe в оперативке уже нету то запускал то что после pause  ?  

start /w D:\Consultant\cons.exe /adm /receive /base* /yes
 
и выкинуть pause.

Всего записей: 352 | Зарегистр. 01-08-2003 | Отправлено: 07:04 23-04-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rushmore
 
Вся проблема в том что не на всех компьютерах при завершении копирования, процесс Cons.exe уже завершился !!!
Поэтому-то и нужно проверка оперативки на наличие его. Если есть - то подождать завершения, а если нет - то продолжать батник дальше.

Всего записей: 1468 | Зарегистр. 28-10-2007 | Отправлено: 07:56 23-04-2009
01MDM



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

Код:
 
:check
ping -n 4 localhost 1>nul
tasklist | findstr /i cons.exe 1>nul && goto:check
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:58 23-04-2009
Cosmogor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
 
Подскажите пожалуйста, как удалить знак =  
в начале стоки в файле *.txt ?
 
код:
 
=multi
 
Что-бы получилось вот так:
 
код:
 
multi
 
Спс.

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 17:23 23-04-2009
Rushmore



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

Цитата:
Вся проблема в том что не на всех компьютерах при завершении копирования, процесс Cons.exe уже завершился !!!  

 
А нельзя ли сначала всё скопировать, а потом уже спокойно обновлять?

Всего записей: 352 | Зарегистр. 01-08-2003 | Отправлено: 17:26 23-04-2009
01MDM



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

Код:
 
@echo off
sed "s/^=//" 1.txt | more 1>1.tmp
move 1.tmp 1.txt
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:06 23-04-2009
Xma111

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

Цитата:
vitrzn

 
Не легче ли это
 

Код:
 
REM Путь каталогу с К+ пользователя
Set Localconsultant=C:\Consultant
REM Путь каталогу с обновлением К+ на CD
REM Set Mobilconsultant=D:\cd
 
Cd ..
Cd Receive
Copy %Mobilconsultant%\Law\*.*
Copy %Mobilconsultant%\Spb\*.*
Copy %Mobilconsultant%\Quest\*.*
Copy %Mobilconsultant%\Pbi\*.*
Copy %Mobilconsultant%\Ppn\*.*
%Localconsultant%\Admin\Rar.exe e -v -y *.rar  
Attrib -R *.*  
Del %Localconsultant%\Receive\*.rar
Del %Localconsultant%\Receive\*.txt
Cd ..
Start /wait Cons.exe /adm /receive /base* /yes
Start /wait Cons.exe /adm /usr /base* /yes
Start /wait Cons.exe /adm /quest /base* /yes
Cd Receive
%Localconsultant%\Admin\Uinf3000.exe
Xcopy *.usr %Localconsultant%\Receive\firma\
 

 
Работает на ура))
 
Добавлено:
Помогите люди добрые))
 
На рабочем столе лежит ярлык. В свойствах ярлыка есть строка "Объект", в которой разные путь до постоянного файла dba.exe
Как батником найти ярлык, который принадлежит именно к этому файлу и путь до него вывести в переменную, для последующей работы! ))))

Всего записей: 6 | Зарегистр. 16-04-2009 | Отправлено: 22:39 23-04-2009 | Исправлено: Xma111, 23:12 23-04-2009
Cosmogor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
 
Спасибо за подсказку!
С помощью Sedа всё отлично получается.
 
Есть ещё один маленький вопросик, а средствами Windows без Sedа? Или это невозможно?
Пример:
 
код:
 
for /f "tokens=*" %%a in (1.txt) do call :_replace %%a
goto eof
:_replace
set i=%*
echo %i%
SET i=%iзнак равно)=%
echo %i%>2.txt
goto eof
:eof
 
Пробовал этим кодом, но знак равно не удаляется  
Я даже не знаю чем знак равно заэкранировать.
 
Спс.

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 09:53 24-04-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cosmogor
Это возможно, но как показывает практика, чистые батники не лучшее решение для парсинга текста. Есть много нюансов, которые просто нельзя заранее предусмотреть. Да и намного медленнее все работает.

Код:
 
for /f "tokens=*" %%a in (1.txt) do call :_replace %%a
goto:eof
 
:_replace
 
set i=%*
echo %i%
if "%i:~0,1%"=="=" SET i=%i:~1%
echo %i%>>2.txt
 

 
Теперь попробуй вставить в 1.txt различные спецсимволы (< > & % и т.д)

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:30 24-04-2009 | Исправлено: 01MDM, 10:35 24-04-2009
Cosmogor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
 
Ух ты! Всё работает на ура!!!
 
А я тут бился над этим вопросом, ну никак не получалось.
 
Вот есть же понимающие люди в этих вопросах,
такие как 01MDM, Elroir.
Большой + вам 01MDM, спасибо большое!!!!

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 18:21 24-04-2009
Upek

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток.
 
Как можно реализовать скрипт для отправки файлов находящихся в определенной папке созданных сегодня по e-mail.  
 
Пытаюсь реализовать с помощью zerat и forfiles, приходит письмо без вложения.  
 
forfiles -p%~dp0 -m*.rar -d+0 -c"CMD /c zerat smtphost:адрес user:имя pass:пасс auth:login from:"имя" to:"имя" subject:"Hello, %%ToFullName" type:multipart/mixed $boun "Content-Type: text/plain; charset=windows-1250" Получи %%ToName,\n\nРезервную копию  $incl @FILE"  
 
 

Всего записей: 22 | Зарегистр. 08-07-2006 | Отправлено: 00:42 25-04-2009
romrub

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
попробуй так:
 
for %%I in (%~dp0*.*) do call :CheckToday %%I
goto :EOF
 
:CheckToday
set DATEFILE=%~t1
if "%DATEFILE:~0,10%"=="%DATE%" cmd /c zerat или т.п.
goto :EOF

Всего записей: 25 | Зарегистр. 18-03-2009 | Отправлено: 13:30 25-04-2009
Upek

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

Ну поиск файла проходит, а вот как найденный файл прикрепить к письму?

Всего записей: 22 | Зарегистр. 08-07-2006 | Отправлено: 16:21 25-04-2009
romrub

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не знаю, что такое zerat, но если он умеет прикреплять файлы по имени, то полное имя файла с путем - в параметре %1, т.е. вызывать надо cmd /c zerat %1 (ну или как там по синтаксису).
 

Всего записей: 25 | Зарегистр. 18-03-2009 | Отправлено: 16:34 25-04-2009
Cosmogor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
 
Вопрос экспертам:
Интересно, какая переменная у папки (system32)
а то приходится вот так писать:
%SystemRoot%\system32\, или у неё нет переменной?
В справке Windows я не нашёл, в принцепе и для папки (Program Files)
тоже не нашёл переменной, хотя вот эта (%ProgramFiles%) работает хорошо.
 
 
Спс.

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 19:29 25-04-2009
01MDM



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

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:31 25-04-2009
Cosmogor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
 
Из команды:  SET P /?
Ничего не понял, на одной переменной PATH сразу несколько папок.
01MDM , разьясни новичку в этом деле.

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 21:42 25-04-2009
El Sanchez



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cosmogor
 
Переменная представляет собой список полных путей каталогов, разделенных символом точки с запятой, в которых система ищет исполняемый файл при его запуске. Это значит , что для запуска из командной строки, например, утилиты ping.exe не нужно будет прописывать в комстроке к ней полный путь - каталог System32, в котором находится ping.exe прописан в Path.

Всего записей: 467 | Зарегистр. 23-12-2008 | Отправлено: 22:55 25-04-2009
Elroir



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

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:34 26-04-2009
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Когда-то довно зарегистрировал  кучу номерков icq в формате пароль;номер символ ";" разделяет пароль от номера. Теперь понадобилось пропустить их через одну программу которая понимает формат номер;пароль, получаеться мне необходимо поменять местами, всё что до символа с тем что после, вручную это сделать не реально, там пару тысяч записей, поэтому обращаюсь к вам за помощью решить проблему.
Спасибо!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 12:48 26-04-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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru