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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 200

Открыть новую тему     Написать ответ в эту тему

Maz



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.10 до Windows 11 +Win95cmd +ReactOS) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на своей версии ОС.
 
· Большой сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 38913 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: metatrop, 07:55 29-11-2022
MaxDe20

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
https://postimg.cc/qtMq8mqy
 
есть батник чтоб все удалить цифры и точки и пробел?
на скрине нарисовал

Всего записей: 1 | Зарегистр. 19-09-2020 | Отправлено: 19:21 19-09-2020
BorlandIMHO

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaxDe20
Если "из имени файла удалить всё до первого пробела" - как два пальца об асфальт.  
Numbering_delete.cmd
Код:
@echo OFF
set "SOURCE_DIR=x:\path to\folder"
pushd "%SOURCE_DIR%" || call :ABORT "Папка "%SOURCE_DIR%" не существует или недоступна"
 
for /f "usebackq tokens=1,* delims= " %%A in (`dir /B /A:-D *`) do (
    ren "%%~A %%~B" "%%~B"
)
goto :EOF
 
:ABORT
echo %~1
echo Аварийное завершение работы
pause
exit


----------
http://www.imho.ws

Всего записей: 2442 | Зарегистр. 12-10-2006 | Отправлено: 20:29 19-09-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
А если 2 пробела подряд?

----------
Magically yours
Raistlin

Всего записей: 4044 | Зарегистр. 18-04-2005 | Отправлено: 20:36 19-09-2020
BorlandIMHO

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

Цитата:
А если 2 пробела подряд?

Тогда будет работать неправильно.
И если вдруг у какого-либо файла нет пробела после точки или вообще нет цифр вначале - тоже результат будет отличен от ожидаемого.
Я исходил из того, что все файлы поименованы однообразно: "цифры/точка/пробел/собственно имя файла", ибо на картинке именно так.

----------
http://www.imho.ws

Всего записей: 2442 | Зарегистр. 12-10-2006 | Отправлено: 20:48 19-09-2020
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите реализовать следующую задачку, посредством bat-файла:
В локальной сети имеется, допустим, 2-а компа. Пингуем комп №1 и, если ответ положительный, то копируем на него (на комп №1) файл. Если же ответ отрицательный - выполняем удалённое выключение (shutdown.exe /m \\№2 /s /f /t 0) компа №2.
Локалка домашняя, все права есть. Просто не могу сообразить, КАК

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 06:46 20-09-2020
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasyosuol_24
 
for /f %%i in ('ping №1 ^| find /c "Превышен интервал ожидания для запроса"') do (
if %%i==0  copy C:\folder\file.txt \\№1\folder /Z /Y /V
if %%i gtr 0 shutdown.exe /m \\№2 /s /f /t 0  )
 
Файл должен быть в кодировке DOS!

Всего записей: 687 | Зарегистр. 12-09-2017 | Отправлено: 11:23 21-09-2020 | Исправлено: Fenrizz, 12:43 21-09-2020
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Это у меня практически уже есть. Мне нужно саму реализацию поведения ответа от команды ping.exe:
есть ответ - копируем файл, нет ответа - гасим №2
Правильно ли я понимаю: если комп №1 включен, то errorlevel будет 0?
Хотелось бы увидеть всю конструкцию полностью - чайниковат я в этом вопросе

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 11:58 21-09-2020
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Отредактировал первый пост.
 
Первоначальный вариант работал немного не так, как Вам нужно.
Условие if errorlevel 1 срабатывает если error level = 1 или больше (https://habr.com/ru/post/41028/)
 
Вот коды errorlevel команды copy:
 
Exit code  Description
=========  ===========
    0      Files were copied without error.
    1      No files were found to copy.
    2      The user pressed CTRL+C to terminate xcopy.
    4      Initialization error occurred. There is not
           enough memory or disk space, or you entered
           an invalid drive name or invalid syntax on
           the command line.
    5      Disk write error occurred.

Всего записей: 687 | Зарегистр. 12-09-2017 | Отправлено: 12:45 21-09-2020 | Исправлено: Fenrizz, 12:49 21-09-2020
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Чёт не работает И не пишет ничего, не могу посмотреть, в чём причина. Вот мой вариант, с xcopy (пробовал и ваш с copy - тоже самое, "тишина"):

Код:
 
for /f %%i in ('ping 192.168.2.33 ^| find /c "Превышен интервал ожидания для запроса"') do (
if %%i==0  xcopy /Y C:\file.txt \\192.168.2.33\D$\1\
rem if %%i gtr 0 shutdown.exe /m \\№2 /s /f /t 0  )  
if %%i gtr 0 notepad.exe

Запускаю простое копирование на \\192.168.2.33\D$\1\

Код:
@echo off
xcopy /Y C:\file.txt \\192.168.2.33\D$\1\

всё работает, пишет: "Скопировано файлов: 1."
Кодировка (пользуюсь Far Manager) - 866(OEM).

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 13:43 21-09-2020 | Исправлено: vasyosuol_24, 13:44 21-09-2020
Fenrizz



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

Цитата:
for /f %%i in ('ping 192.168.2.33 ^| find /c "Превышен интервал ожидания для запроса"') do (  
echo %%i  
if %%i==0  xcopy /Y C:\file.txt \\192.168.2.33\D$\1\  
rem if %%i gtr 0 shutdown.exe /m \\№2 /s /f /t 0  )  
if %%i gtr 0 notepad.exe )  

Всего записей: 687 | Зарегистр. 12-09-2017 | Отправлено: 14:01 21-09-2020
RetroRocket



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasyosuol_24
Можно без учёта кодировки сделать так:

Код:
set NODE_A=192.168.2.33
set NODE_B=192.168.2.34
set FILE_COPY=C:\file.txt
 
set COUNT=0
for /f %%A in ('"ping -n 5 -w 5000 %NODE_A%|find /i /c "TTL""') do (set COUNT=%%A)
echo Successful pings - %COUNT% of 5
if "%COUNT%" == "0" (
echo Node %NODE_A% is not available. Node %NODE_B% shutting down ... && shutdown.exe /m \\%NODE_B% /s /f /t 0
) else (
echo Node %NODE_A% is available. && xcopy /Y /H /Z %FILE_COPY% \\%NODE_A%\D$\1\
)

Делаем пять пингов и в ответах ищем слово "TTL".
Если из пяти пингов хотя бы один успешный (содержит слово "TTL" в ответе), то копируем файл.

----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2705 | Зарегистр. 02-01-2018 | Отправлено: 14:11 21-09-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RetroRocket
А errorlevel не проще проверить? Или вообще сразу копировать файл и по результатам копирования смотреть?

----------
Magically yours
Raistlin

Всего записей: 4044 | Зарегистр. 18-04-2005 | Отправлено: 14:17 21-09-2020
RetroRocket



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Цитата:
А errorlevel не проще проверить? Или вообще сразу копировать файл и по результатам копирования смотреть?
Да я разве против? Вариантов решения задачи можно придумать несколько.
Свой вариант я использовал в ситуации с нестабильным соединением, когда узел пингуется (errorlevel будет 0), но с потерями.
При наличии потерь делал рестарт.

----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2705 | Зарегистр. 02-01-2018 | Отправлено: 14:27 21-09-2020
GCRaistlin



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

Цитата:
Свой вариант я использовал в ситуации с нестабильным соединением

Не имеет значения. Анализировать вывод команды без необходимости - это индусский подход.

----------
Magically yours
Raistlin

Всего записей: 4044 | Зарегистр. 18-04-2005 | Отправлено: 14:33 21-09-2020
RetroRocket



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Цитата:
Не имеет значения. Анализировать вывод команды без необходимости - это индусский подход.
Почему без необходимости то? Мне нужно было оценить число успешных пингов из общего количества.
Для этого выхлоп команды пинг и проверял. Текущая локаль здесь не важна.
Впрочем, как скажете. Дискуссия с наклеиванием ярлыков неконструктивная.

----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2705 | Зарегистр. 02-01-2018 | Отправлено: 15:01 21-09-2020
GCRaistlin



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

Цитата:
Мне нужно было оценить число успешных пингов из общего количества.

Тогда возражение снимается. Я-то понял так, что вы схожую задачу решали подобным образом.

----------
Magically yours
Raistlin

Всего записей: 4044 | Зарегистр. 18-04-2005 | Отправлено: 15:27 21-09-2020
RetroRocket



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

 
Кнопка А не запала. Если просто открыть cmd, то всё чисто. WinXP, CHCP говорит 866.
Откуда такой выхлоп аа...аа идёт?

Добавлено:
Эффект ааааа вызывает tasklist, но не всех машинах и причина такого поведения непонятна.
 


----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2705 | Зарегистр. 02-01-2018 | Отправлено: 15:31 21-09-2020 | Исправлено: RetroRocket, 07:14 22-09-2020
vasyosuol_24

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

Цитата:
Скобку закройте.  

Семён Семёныч! (с)
Спасибо, заработало!
Вопрос, а вот это: "Превышен интервал ожидания для запроса"' - зачем нужно? Мне, в принципе, эту запись видеть без необходимости - если комп (№1) не откликается, фиг бы чей с ним, выключаем №2. Это я просто для проверки пока Блокнот запускал, забыв скобку при этом - думаю, и так всем понятно...
 
RetroRocket
Вариант интересный, записал себе в мемориз. Пока, правда, невостребован - не стоит усложнять без необходимости. У меня и так к концу дня уже "крыша в пути"...

Цитата:
Свой вариант я использовал в ситуации с нестабильным соединением, когда узел пингуется (errorlevel будет 0), но с потерями.  

В данном случае сеть стабильная - стабильнее некуда.

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 15:35 21-09-2020
nikitos435

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

Код:
@echo off
SetLocal
 
net use M: /delete
 
net use M: "\\base1c\base1c" 45ujsdelwwgthe4gt_hjo3bsfhmHGfgfGFG /user:basec
 
taskkill /F /IM 1cv8s.exe /T
taskkill /F /IM 1cv8.exe /T
taskkill /F /IM 1cv8c.exe /T
 
set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
 
"C:\Program Files\1cv8\8.3.15.1830\bin\1cv8.exe" DESIGNER /F "M:\Base1C\Base 1C8 Вега" /DisableStartupMessage /DumpIB "E:\Backup_1C\Vega\Vega_%datetimef%.dt" /OUT "E:\Backup_Log\Vega.log" -NoTruncate
echo %datetimef% >> E:\Backup_Log\Vega.log
"C:\Program Files\1cv8\8.3.15.1830\bin\1cv8.exe" DESIGNER /F "M:\Base1C\Base 1C ГФ" /N "Администратор" /DisableStartupMessage /DumpIB "E:\Backup_1C\GF\GF_%datetimef%.dt" /OUT "E:\Backup_Log\GF.log" -NoTruncate
echo %datetimef% >> E:\Backup_Log\GF.log
"C:\Program Files\1cv8\8.3.15.1830\bin\1cv8.exe" DESIGNER /F "M:\Base1C\проект" /DisableStartupMessage /DumpIB "E:\Backup_1C\Proekt\TezaProekt_%datetimef%.dt" /OUT "E:\Backup_Log\Proekt.log" -NoTruncate
echo %datetimef% >> E:\Backup_Log\Proekt.log
"C:\Program Files\1cv8\8.3.15.1830\bin\1cv8.exe" DESIGNER /F "M:\Base1C\строй" /DisableStartupMessage /DumpIB "E:\Backup_1C\Stroy\Stroy_%datetimef%.dt" /OUT "E:\Backup_Log\Stroy.log" -NoTruncate
echo %datetimef% >> E:\Backup_Log\Stroy.log
"C:\Program Files\1cv8\8.3.15.1830\bin\1cv8.exe" DESIGNER /F "M:\Base1C\03032020" /DisableStartupMessage /DumpIB "E:\Backup_1C\83\83_%datetimef%.dt" /OUT "E:\Backup_Log\83.log" -NoTruncate
echo %datetimef% >> E:\Backup_Log\83.log
"C:\Program Files\1cv8\8.3.15.1830\bin\1cv8.exe" DESIGNER /F "M:\Base1C\свертка" /DisableStartupMessage /DumpIB "E:\Backup_1C\Svertka\Svertka_%datetimef%.dt" /OUT "E:\Backup_Log\Svertka.log" -NoTruncate
echo %datetimef% >> E:\Backup_Log\Svertka.log
 
net use M: /delete
 
pushd "E:\Backup_1C\Vega" && (forfiles /d -60 /m *.dt /c "cmd /c del /f /q @file")
popd
pushd "E:\Backup_1C\GF" && (forfiles /d -60 /m *.dt /c "cmd /c del /f /q @file")
popd
pushd "E:\Backup_1C\Proekt" && (forfiles /d -60 /m *.dt /c "cmd /c del /f /q @file")
popd
pushd "E:\Backup_1C\Stroy" && (forfiles /d -60 /m *.dt /c "cmd /c del /f /q @file")
popd
pushd "E:\Backup_1C\83" && (forfiles /d -60 /m *.dt /c "cmd /c del /f /q @file")
popd
pushd "E:\Backup_1C\Svertka" && (forfiles /d -60 /m *.dt /c "cmd /c del /f /q @file")
popd
 
shutdown /s /t 0
 
endlocal  

 
ПК ночью сам включается. Планировщик скрипт запускает. Но бэкапы баз 1С не делаются. в логах запись  
"Информационная база не обнаружена".
1С ночью никто не пользуется. Конфигуратор запускается. В брандмауэре запрещающих правил нет.
Подскажите по командам создания dt файла, где то я накосячил. Хотя раньше если скрипт руками запускать, то dt файлы делались. Сейчас ни одна база не сделалась, но в логах записи обновились

Всего записей: 211 | Зарегистр. 20-03-2012 | Отправлено: 09:17 22-09-2020 | Исправлено: nikitos435, 09:17 22-09-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 200

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru