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

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

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

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

cchameleone



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
» Описание Cmd.exe » Command shell overview
» Using batch files » Using batch parameters » Using filters » Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Попов А. Командная строка и сценарии Windows (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2279 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
frost745



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер.
Такой вопрос. Есть .ini файл (это просто пример, чтобы было понятно что требуется)
Подробнее...
и есть ли возможность сделать батник (или каким другим способом), чтобы "false" не вручную менять на "true"  
Подробнее...
 
короче нужно или чтобы менялись слова, или сделать два .ini файла (но чтобы мог один работать, и другой по очереди), чтобы автоматизировать процесс переключения  
 
 
 

Всего записей: 4164 | Зарегистр. 26-02-2013 | Отправлено: 21:19 21-11-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
frost745
SED или, если нужно попроще, NirCmd -> IniSetVal

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 21:23 21-11-2016
frost745



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
суть, я может немного непонятно написал выше - есть программы, где интерфейс (язык) можно переключить только правкой текста в .ini файле. и чтобы вручную не переписывать или готовые файлы вручную не копировать каждый раз. собственно для этого (а может и ещё на что сгодится).  

Всего записей: 4164 | Зарегистр. 26-02-2013 | Отправлено: 21:30 21-11-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
frost745
Ну и? NirCmd умеет править значения в INI-файлах... Я даже сразу ссылку на нужную функцию дал. Можно и SED'ом, но там посложнее...

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 21:58 21-11-2016
frost745



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

Код:
nircmd.exe inisetval "c:\windows\test.ini" "section1" "TestValue" "1"

 
а как мне сделать сразу две, три и т.д. за один раз?
 

Код:
nircmd.exe inisetval "c:\windows\test.ini" "section1" "TestValue" "1"
nircmd.exe inisetval "c:\windows\test.ini" "section2" "TestValue" "1"

 
а ещё лучше упаковать эту писанину в bat файл
 

Всего записей: 4164 | Зарегистр. 26-02-2013 | Отправлено: 22:51 21-11-2016 | Исправлено: frost745, 22:55 21-11-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
frost745
Ну так ваш пример вполне рабочий, в бат-файлах в каждой строке идет по команде

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 23:15 21-11-2016
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
 
20:14 21-11-2016
Цитата:
Ну, тогда никак. Без вариантов.

Ни совсем так.
 
Задача решена. Все работает как мне нужно. Оказалось все настолько просто, что некоторое время был в шоке, а я полдня провозился из-за проблемы символа-разделителя в /path=c:\mydir, о нюансе котором я не знал.
За помощь спасибо At1ant.

Всего записей: 3689 | Зарегистр. 29-01-2005 | Отправлено: 21:48 22-11-2016 | Исправлено: boss911, 21:51 22-11-2016
NovaC

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
День добрый!
Нужно сделать в bat скрипте возможность выбора даты таким образом :  
d=day-0 = сегодня
d=day-1 = вчера
d=day-2 = два дня назад  
 
Делаю таким образом:

Код:
 
for /f "tokens=1,2,3 delims=. " %%a in ('date /t') do (set day=%%a&set month=%%b&set year=%%c)
if %day% LEQ 09 (set day=%day:~-1%)
set /a d=day-1
set d=0%d%
set d=%d:~-2%
echo %d%-%month%-%year%
 

Это работает, но нужно допилить, что бы обрабатывались ситуации с первым числом месяца, первым числом года, 1 марта.
Подскажите пж, как это можно сделать?
Спасибо

Всего записей: 95 | Зарегистр. 09-01-2008 | Отправлено: 06:03 01-12-2016 | Исправлено: NovaC, 06:07 01-12-2016
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NovaC
наверное проще не допилить, а переписать: в соседней ветке было неплохое решение с использованием VBScript.
При этом с датой работа ведется как датой, поэтому пограничные состояния роли не играют...

----------
Всем непричастным рекомендую прогулки на свежем воздухе

Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 09:54 01-12-2016 | Исправлено: yurkesha, 09:55 01-12-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NovaC
yurkesha
Ну или например использовать date из, например, UnxUtils. С помощью нее тоже можно проводить сложение-вычитание дат.

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 11:25 01-12-2016
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Цитата:
Ну или например использовать date из, например, UnxUtils
это внешнее средство - тем и не айс.


----------
Всем непричастным рекомендую прогулки на свежем воздухе

Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 11:35 01-12-2016
DenisRodman



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Просьба написать батник для решения поставленной задачи. Батник должен помещаться в любую папку/директорию и там запускаться т.е. без привязки к какой-либо папке, далее будет уже идти обработка файлов имя которых не важно, важно только расширение это .xml и их может быть любое количество.
 
Необходимо найти содержание к примеру <Graphic Width="445" Height="49" X="737" Y="880"> и заменить его на <Graphic>
 
Таких строчек может быть сколько угодно и то что будет идти после <Graphic всегда будет разное и отличаться по длине символов.
 
Пример исходного файла
 
Пример файла который должен получиться

Всего записей: 578 | Зарегистр. 20-09-2013 | Отправлено: 11:44 18-12-2016 | Исправлено: DenisRodman, 13:19 27-12-2016
Aniritake

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день. Помогите, пожалуйста, с батником.
У меня есть рабочая часть, которая переименует файл PMK.ert в папке BASE в  дата+PMK.ert и потом из папки CP в папку BASE копируется файл PMK.ert  
 
Но я никак не могу прикрутить, чтобы этот батник не стартовал, если в папке CP отсутствует файл PMK.ert
 
Вот часть, которая отрабатывает  

Код:
 
@echo
set CURDATE=%DATE%  
ren C:\base1c\РМК.ert %CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%РМК.ert  
move /Y D:\cp\РМК.ert C:\base1c\РМК.ert  
set CURDATE=

 
Я пробовала и через if exist / echo и через  if not exist, но не получается.
если я пишу  

Код:
 if not exist D:\cp\РМК.ert echo exit/stop

то команда выдает стоп, но файл все равно переименовывается и перемещается. I'm stupid.

Всего записей: 9 | Зарегистр. 06-08-2013 | Отправлено: 18:59 19-12-2016 | Исправлено: Aniritake, 19:00 19-12-2016
fakel33



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

Код:
@echo
set CURDATE=%DATE%
if exist D:\cp\РМК.ert (
ren C:\base1c\РМК.ert %CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%РМК.ert
move /Y D:\cp\РМК.ert C:\base1c\РМК.ert
)
set CURDATE=

Всего записей: 1180 | Зарегистр. 22-08-2003 | Отправлено: 19:13 19-12-2016 | Исправлено: fakel33, 19:14 19-12-2016
Aniritake

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

Цитата:
if exist D:\cp\РМК.ert (  
ren C:\base1c\РМК.ert %CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%РМК.ert  
move /Y D:\cp\РМК.ert C:\base1c\РМК.ert )  

 
я подозреваю, что так как в echo выполняется несколько действий он не может идти дальше.
В cmd он просто на выдает вопрос после каждого действия "продолжить?"
 

Код:
C:\Users\TheRine>@echo
Режим вывода команд на экран (ECHO) включен.
C:\Users\TheRine>set CURDATE=%DATE%
C:\Users\TheRine>if exist D:\cp\РМК.ert (
Продолжить? ren C:\base1c\РМК.ert %CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%РМК.
ert
Продолжить? move /Y D:\cp\РМК.ert C:\base1c\РМК.ert
Продолжить? )
C:\Users\TheRine>set CURDATE=  

Всего записей: 9 | Зарегистр. 06-08-2013 | Отправлено: 19:19 19-12-2016 | Исправлено: Aniritake, 19:21 19-12-2016
fakel33



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aniritake
 
Для проверки сделайте след cmd

Код:
 
@echo on
set CURDATE=%DATE%
if exist РМК.ert (
ren РМК.ert %CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%РМК.ert
move /Y D:\cp\РМК.ert C:\base1c\
)
pause
set CURDATE=  

 
и

Код:
 
echo on
set CURDATE=%DATE%
if exist РМК.ert (
ren РМК.ert %CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%РМК.ert
move /Y D:\cp\РМК.ert C:\base1c\
pause
)
set CURDATE=  

В первом случае пауза отработает всегда, а во втором только когда есть файл РМК.ert

Всего записей: 1180 | Зарегистр. 22-08-2003 | Отправлено: 19:28 19-12-2016 | Исправлено: fakel33, 20:26 19-12-2016
Aniritake

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

Код:
 
@echo on  
set CURDATE=%DATE%  
if not exist D:\cp\РМК.ert (exit)
echo (
ren C:\base1c\РМК.ert %CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%РМК.ert && move /Y D:\cp\1 C:\base1c\
)
set CURDATE=  

 
но при этом, при следующей отработке батника, он пишет что уже не может найти файл в C:\base1c\РМК.ert, который он в прошлый раз переместил из D:\cp\, до тех пор пока, ты не сделаешь копипаст из батника. Бред.  
 

Всего записей: 9 | Зарегистр. 06-08-2013 | Отправлено: 13:18 20-12-2016 | Исправлено: Aniritake, 14:00 20-12-2016
fakel33



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

Код:
 
echo on
set CURDATE=%DATE%
if exist РМК.ert (
ren РМК.ert %CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%РМК.ert
move /Y D:\cp\РМК.ert C:\base1c\
)
set CURDATE=

 
1. Проверьте , что Ваш CMD файл создан в содовой странице 866 (DOS) если используете Windows XP/Vista/7
2. CMD файл положите в каталог C:\base1c\
3. Далее делаете ярлык на рабочем столе или запускаете еще как-то этот cmd
 
У меня работает нормально.

Всего записей: 1180 | Зарегистр. 22-08-2003 | Отправлено: 13:53 20-12-2016
Aniritake

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

Всего записей: 9 | Зарегистр. 06-08-2013 | Отправлено: 14:01 20-12-2016
fakel33



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aniritake
У Вас файл  D:\cp\РМК.ert переносится из  D:\cp\ в C:\base1c\, а не копируется.
В результате при вторичном запуске не возможно перенести этот файл - его там уже нет
Поставьте  

Код:
copy /Y D:\cp\РМК.ert C:\base1c\  

и файл будет копироваться всегда.

Всего записей: 1180 | Зарегистр. 22-08-2003 | Отправлено: 14:07 20-12-2016
   

Страницы: 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru