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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HaK1R
Я в личке исправился Спасибо, что заметил.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:44 27-06-2009 | Исправлено: 01MDM, 10:48 27-06-2009
madmasles

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста.
Есть first.cmd, который перебирает все содержимое своей папки и переносит в текстовый файл tekst.txt список имен всех файлов с расширением .exe (их количество меняется). При помощи какого кода, на основании этого списка, все эти файлы .exe по очереди запустить с  двумя разными ключами в зависимости от наличия в имени двух разных чисел (2003 и 2007)  из second.cmd, и как из first.cmd запустить second.cmd.
Заранее спасибо.
 
Система XP SP3.

Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 04:54 28-06-2009
Maza_Faka



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

Код:
 
Call second.cmd
 

 
second.cmd

Код:
 
@Echo Off
 
For /F "Tokens=*" %%A In (tekst.txt) Do (
  Echo %%A | Find "2003">Nul && Echo Start "%%A" -param1
  Echo %%A | Find "2007">Nul && Echo Start "%%A" -param2
)
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:34 28-06-2009 | Исправлено: Maza_Faka, 08:35 28-06-2009
madmasles

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

Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 08:45 28-06-2009
madmasles

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
Еще раз огромное спасибо! Под себя чуть-чуть подогнал и все работает.
Можно еще вопрос.
Как можно определить различия у 2 файлов, если у них у обоих расширение .exe, но 1 - самораспаковывающийся архив, а другой нет.
Спасибо.
 

Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:15 29-06-2009
ssvgarry

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята помогите разобраться....  поставил тут сборку от BestXP 9.6.1... в принципе всё очень не плохо, но сталкнулся с такой проблемой... не хочет работать systeminfo.exe, выдаёт "ошибка:класс не зарегистрирован", всё бы ничего, но в свою очередь возникли проблемы  при установке драйвера ADSL USB modem- драйвер не для данной ОС, затем не установить pre_SP4 - система не является Windows XP... короче те проги которые опрашивают систему через systeminfo, файл в системе, не порченый... все записи в реестре о системе есть....  в чём проблема не пойму, а уж тем более как лечить... рыл инет по systeminfo- только ключи, а как, куда он обращается не нашёл... конечно можно снести и поставить чистую XP, но жалко... может кто подскажет где и что копать или как вылечить эту проблему? Заранее спасибо, очень на Вас расчитываю!  

Всего записей: 2 | Зарегистр. 05-01-2007 | Отправлено: 03:34 30-06-2009
Mikhaluch

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Через командную строку можно на прямую узнать какой сервис пак стоит и нужно через батник это сделать. Если нет третьего, то ставить, а если нет ни какого то сначала второй потом третий.
Типа SET, есть такое для SP-ов?
Или только по папке $NtServicePackUninstall$ определять, как-то не "цивилизованно" ...

Всего записей: 54 | Зарегистр. 23-12-2008 | Отправлено: 15:52 30-06-2009
01MDM



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

Цитата:
выдаёт "ошибка:класс не зарегистрирован"

 
Какие-то проблемы с WMI, имхо. Что там "насобирали", могут и сами не догадываться.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:14 30-06-2009
HaK1R



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

Код:
@echo off
for /f "tokens=1,2* skip=4" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion') do (
  if "%%c"=="Service Pack 3" (goto :EOF)
  if "%%c"=="Service Pack 2" (goto :SP3)
)
:SP2
start /wait "" "C:\setup_SP2.exe"
:SP3
start "" "C:\setup_SP3.exe"
goto :EOF
 

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 22:27 30-06-2009 | Исправлено: HaK1R, 11:57 01-07-2009
DiZka



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

Всего записей: 374 | Зарегистр. 16-08-2005 | Отправлено: 09:34 01-07-2009
Maza_Faka



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

Код:
 
xcopy c:\file.txt d:\ /H
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:05 01-07-2009
Mikhaluch

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

Всего записей: 54 | Зарегистр. 23-12-2008 | Отправлено: 13:28 01-07-2009
Fannat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо, работает.
 
To All
Хочу настроить автоматическое формирование подписи в почте у пользователей, в имеющийся шаблон записать данные из AD. Можно ли с помощью батника отредактировать файл (вставить пару строк)?
 
И ещё два вопроса: как указать, что надо обработать только вторую строку (из 3-х)? первую я исключил, но при обработке команды не работает параметр конца набора. И как убрать пробелы вначале и конце строки? (команда Dsget вставляет по два пробела )
 

Код:
 
for /f "skip=1 delims=*" %%a in ('"dsquery user -samid %username% | dsget user -dept"') do @Echo "%%a"
 

 

Всего записей: 260 | Зарегистр. 25-11-2005 | Отправлено: 13:34 01-07-2009
Nushaba

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проверку файлов в папке я сделал сам, разобрался, но есть ещё необходимость в одном батнике, который:
1. Проверял в папке файл и его размер
2. Если размер больше 1 мегабайта, переместить файл в папку ConfTemp
 
Вижу это примерно вот так:

Код:
 
if exist C:\LukiSQL\Job\temp\vl0.zip goto go
exit
:go
rename vl0.zip vl0.zip ///проверка на случай если файл находится в стадии копирования, если файл ещё не докопировался в эту папку, скрипт не сможет переименовать файл и даст ошибку
if not errorlevel 0 goto go
move /y C:\LukiSQL\Job\temp\vl0.zip C:\LukiSQL\Job\ConfTemp\
 

Надо что то дописать для проверки размера, помогите уважаемые!

Всего записей: 26 | Зарегистр. 13-04-2009 | Отправлено: 13:39 01-07-2009
Mikhaluch

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HaK1R
А в двух словах если не сложно можете описать выбор переменных, почему именно "а" для цикла , и "с" для сравнения?
 
Добавлено:
Почти понял.... Но буду благодарен комментарию.

Всего записей: 54 | Зарегистр. 23-12-2008 | Отправлено: 14:03 01-07-2009 | Исправлено: Mikhaluch, 14:07 01-07-2009
01MDM



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

Цитата:
1. Проверял в папке файл и его размер
2. Если размер больше 1 мегабайта, переместить файл в папку ConfTemp

 

Код:
 
pushd "C:\LukiSQL\Job\temp"
if exist "vl0.zip" (
     for %%i in ("vl0.zip") do (
         if %%~zi gtr 1048576 (move "vl0.zip" "..\ConfTemp")  
     )  
)
popd
 

 
 
Добавлено:
Fannat

Цитата:
И ещё два вопроса: как указать, что надо обработать только вторую строку (из 3-х)? первую я исключил, но при обработке команды не работает параметр конца набора. И как убрать пробелы вначале и конце строки? (команда Dsget вставляет по два пробела )  

 
Надо только вторую строку:

Код:
 
for /f "skip=1 tokens=*" %%i in ('some_command') do echo %%i && goto:next
:next
 

 
Убрать пробелы:

Код:
 
for /f "skip=1 tokens=*" %%i in ('some_command') do set "str=%%i" && goto:next
:next
 
::1 вариант
echo %str:~2,-2%
 
::2 вариант, если двойные пробелы только в начале и в конце строки
echo %str:  =%  
 

 
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:23 01-07-2009 | Исправлено: 01MDM, 17:38 01-07-2009
Fannat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Работает на отлично. Спасибо.
 
To All
Есть ли возможность вставки данных в файл в определенную строку посредством командного файла?
 

Всего записей: 260 | Зарегистр. 25-11-2005 | Отправлено: 11:43 02-07-2009
Nushaba

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо большое, скрипт очень помог. Немного повозился, сделал под своё ТЗ и всё отлично работает. Хотел бы я до такого уровня подняться, жаль образование железнодорожное... Респект вам.

Всего записей: 26 | Зарегистр. 13-04-2009 | Отправлено: 11:45 02-07-2009
madmasles

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста.
 
Как при помощи кода скопировать из любого места и любого диска file.xla в "Системный диск"-"Program Files"-"Microsoft Office"-"OFFICE11"-"XLSTART"
 
Спасибо.

Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:22 02-07-2009 | Исправлено: madmasles, 18:02 02-07-2009
Nushaba

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сори за спам, появилась ещё одна цель, минимизировать количество батников.
Умеет ли батник в определённое время выполнять определённые действия?
 
Например с 8:00 до 18:00 делать первый скрипт, после 20:00 и до 6:00 делать другое, вот мой пример:

Код:
 
if exist C:\LukiSQL\Job\temp\vl0.zip goto go
exit
:go
rename vl0.zip vl0.zip
if not errorlevel 0 goto go
    pushd "C:\LukiSQL\Job\temp"
    if exist "vl0.zip" (
        for %%i in ("vl0.zip") do (
            if %%~zi gtr 1048576 (move /y "vl0.zip" "C:\LukiSQL\Job\ConfTemp"
            exit)
        )
    )
    popd
move /y C:\LukiSQL\Job\temp\vl0.zip C:\LukiSQL\CP\
C:\Progra~1\1Cv77\bin\1cv7s.exe config /dC:\LukiSQL /nJob /p342555 /@C:\LukiSQL\Job\AutoExchange_instruktion.prm
blat.exe -body " " -subject " " -to mail@mail.ru -attach C:\LikiSQL\PC\vl1.zip

 
Вот тут надо вставить какую то проверку времени, если сейчас скажем не меньше 20:00 и не больше 7:00, то:
 
move /y C:\LukiSQL\Job\ConfTemp\vl0.zip C:\LukiSQL\CP\
C:\Progra~1\1Cv77\bin\1cv7s.exe config /dC:\LukiSQL /nJob /p342555 /@C:\LukiSQL\Job\AutoExchange_instruktion.prm
blat.exe -body " " -subject " " -to mail@mail.ru -attach C:\LikiSQL\PC\vl1.zip
 
При чём желательно что бы в случае отсутствия в папке C:\LukiSQL\Job\ConfTemp\vl0.zip он делал
 
move /y C:\LukiSQL\Job\temp\vl0.zip C:\LukiSQL\CP\
C:\Progra~1\1Cv77\bin\1cv7s.exe config /dC:\LukiSQL /nJob /p342555 /@C:\LukiSQL\Job\AutoExchange_instruktion.prm
blat.exe -body " " -subject " " -to mail@mail.ru -attach C:\LikiSQL\PC\vl1.zip
 
Для меня это уже полная загадка. На данном этапе создан второй батник, который работает с 18:00 и до 7:00 и делает C:\LukiSQL\Job\ConfTemp\vl0.zip C:\LukiSQL\CP\
C:\Progra~1\1Cv77\bin\1cv7s.exe config /dC:\LukiSQL /nJob /p342555 /@C:\LukiSQL\Job\AutoExchange_instruktion.prm
blat.exe -body " " -subject " " -to mail@mail.ru -attach C:\LikiSQL\PC\vl1.zip

Всего записей: 26 | Зарегистр. 13-04-2009 | Отправлено: 14:33 02-07-2009 | Исправлено: Nushaba, 14:57 02-07-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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru