Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» <DEL> Задачи на bat-файлах 11 (испорчена - не писать)

Автор:
Дата сообщения: 01.01.1970 02:00
Сюда больше ничего не пишем

Есть новая тема Задачи на bat-файлах 12
Автор: MirCyber
Дата сообщения: 29.12.2015 09:09
Задачи на bat-файлах 11
Предыдущие части: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.


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

Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.

Для перекодирования кирилицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы


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

Примечание: Большие куски кода заключайте в тэг [no][more][/no]

Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии

[more=Полезные ссылки]

[b]Полезные ссылки:


· Справочник по параметрам командной строки
· Cmd. Описание от разработчиков (англ.) (рус.)
· Урок bat-аники (для начинающих)
· Командная строка и сценарии Windows - уроки
· Библиотека функций для командных файлов
· Использование ansi.sys
· Справка по командам в виде Html
· Команды RunDll32
· Пример - получение и обработка списка пользователей
· Пример перехода из 32-битной версии cmd.exe в 64-битную
[/more][/b]


[more=Полезные утилиты]
[b]Полезные утилиты:


· Утилтиа-модуль (VBS-скрипт) для Internet Explorer - Позволяет копировать выделенный текст без пробелов на конце. Особенно полезно на руборде

· base64 - кодирует/раскодирует файл в/из base64
· blat - отправка почты из консоли
· CLCC - консольный калькулятор
· cmdow - изменение параметров и видимости дос-окна
· cnic - включает/выключает сетевой интерфейс
· crc32 - утилита для подсчета контрольных сумм (только CRC)
· curl - передача и прием файлов, используя URL синтаксис
· curtime - утилита для обработки времени в скриптах
· delbyown - поиск файлов, созданных определенным пользователем, на NTFS разделе
· devcon - включение, выключение, удаление и т.д. устройств из Диспетчера Устройств
· dirdate - изменение даты создания/модификации/последнего доступа файлов
· directify - группирование файлов по общим параметрам
· editpath - добавляет или удаляет директории в переменной PATH
· fastsum - подсчет контрольных сумм (только MD5)
· fciv - подсчет контрольных сумм (MD5 и SHA-1)
· fdf - Fast Duplicate Finder, находит одинаковые по содержанию файлы
· fsum - подсчет контрольных сумм (12 различных алгоритмов)
· gsar - General Search and Replace, поиск и замена текста в файле
· hex - вывод бинарного файла в шестнадцатиричном формате
· hstart - скрытый запуск командных файлов и консольных программ
· mediainfo - утилита для просмотра метаданных мультимедийных файлов, консоль и фронтенд
· mirror - копирование, создание точной копии всей структуры директорий
· msgbox - вывод сообщения в диалоговом окне
· msgbox (другая) - еще одна утилита для вывода сообщения в диалогоовм окне
· mtee - выводит входящие данные на экран и в файл (одновременно)
· netcat - мощная утилита для передачи данных по TCP/UDP соединениям
· nircmd - универсальная утилита на все (почти) случаи жизни
· outwit - пакет из 6-ти полезных GNU Win32 утилит
· portqry - проверка статуса TCP и UDP портов на удаленных машинах
· PsTools - отличный набор утилит для администрирования
· ptime - определяет время работы программ (точность до 5 миллисек.)
· Quick Batch File Compiler - позволяет превратить ваш батник в независимое приложение
· regperm - изменение прав доступа к веткам/ключам реестра
· rmtshare - управление шарами
· rplstr - замена строки текста в файле из командной строки
· scrnres - screen resolution. Выводит разрешение экрана в консоль
· sed - мощный текстовый фильтр/процессор с поддержкой регулярных выражений
· setacl - изменение прав доступа к объектам
· setenv - утилита для работы с системными переменными
· smtpsend - отправка сообщений на электронную почту
· Streams - утилита для работы с альтернативными потоками NTFS
· trayconizer - позволяет сворачивать окно программы в трей
· tst - скриптовая утилита для автоматизации telnet-сессий
· uniqline - утилита фильтрующая одинаковые строчки в тексте, умеет удалять пустые строчки и пробелы в начале и конце строк
· UnxUtils - набор GNU утилит для Win32
· wget - консольная утилита для скачивания файлов по HTTP, HTTPS и FTP протоколам
· Win2000 Resource Kit Tools
· Win2003 Resource Kit Tools
· xcodewin - перекодировщик русского текста, поддерживает 14 кодировок
· Пакет утилит для организации интерфейса в bat-файлах
· BAT Enchancer
[/more][/b]


Готовые решения и частые вопросы:
Встроенный справочник по командам
Создание помощи по всем командам консоли 2000 и XP
Делаем паузу в командном файле стандартными средствами Windows
[more=Альтернативные решения »]

Альтернативные решения


· Альтернатива команде ECHO - позволяет выводить текст в файл без перевода строки.
· Установка задержки (паузы) в батнике
· Установка задержки (паузы) в батнике (используя VBScript)
· Конвертирование файлов (*.com *.exe *.*) в код батника
· Переход из 32-битной версии cmd.exe в 64-битную
[/more]
[more=Работа с текстом, датой, и файлами »]

Работа с текстом, датой и файлами


· Создание листинга директорий на примере создания плейлиста
· Переименовывание файлов по дате модификации
· Использование даты на день раньше чем сегодня
· Использование даты на день раньше чем сегодня (учитываются високосные годы)
· Использование даты на день раньше чем сегодня (используя VBScript)
· Использование разницы между датой создания файла(папки) и текущей, в днях или минутах(используя VBScript)
· Конвертирование текста из кириллицы в латиницу
· Проверка существования файла и присвоение ему нового имени в случае если такой файл уже существует
· Замена текста в файле (sbs2.com)
· Удаление всего содержимого каталога, включая подкаталоги, командой rd (не удаляя сам каталог)
· Удаление файлов в указаном каталоге включая подкаталоги, с ведением лога удаления (удалён/не удалён)
· Удаление файлов во всех под/каталогах, имя которых (каталога) содержит определённое значение (Temp к примеру)
· Чтение из файлов содержащих ключи и значения (подобно структуре .ini файлов)
· Получение системного времени в одном формате (вне зависимости от настроек даты и времени системы)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) и ещё вариант
· Разбиение целого числа байтов (размера файла) на тысячные значения
[/more]
[more=Администрирование, автоматизация и сеть »]

Администрирование, автоматизация и сеть


· Запуск сетевого подключения
· Пример выполнения команд по результату команды ping
· Запуск bat файлов как сервис
· SBS - Sleep before shutdown - Утилита для выключеня и перезапуска компьютера через заданное время
· Перезапуск эксплорера с восстановлением открытых директорий
· Download And Extract - батник-гибрид для закачки архивов и моментальной их распаковки в папку с именем самого архива
[/more]
[more=Работа с переменными и параметрами ком. строки »]

Работа с переменными и параметрами ком. строки


· Разименовывание переменных
· Создание (запись) переменных окружения в реестр
· Способ передачи в бат-файл параметра содержащего символы & и последующей обработки полученного значения
[/more]

Описания работы команд и символов участниками темы:
· setlocal enabledelayedexpansion и переменные окружения
· символы & и && в командной строке
· Переменная %0
Автор: YuS_2
Дата сообщения: 29.12.2015 09:52
Тут и так было всё пропавшим... количество постов было -1
Продолжение здесь
Автор: hErAx
Дата сообщения: 04.01.2016 11:12
Я шапку для 12-й части внимательно и тщательно восстановил из предыдущих тем.


Цитата:
-1
Попробовал отредактировать здесь своё сообщение, а открывается редактирование предыдущего. Топик непригоден для продолжения.
Автор: grablin
Дата сообщения: 11.01.2016 06:31
Здравствуйте!
Написал бат файл.
Логическая цепочка такова.
1.
Изменения в системном реестре.
2.
Запуск программы
3.
Закрытие программы и снова зменения в системном реестре.

Батник нработает правильно, но если его конвертировать в .exe то не выполняются команды связанные с внесением изменений в реестре до и после запуска программы указанной в батнике.
Что надо попрвить чтобы заставить ехе работать правильно?

Вот содержимое батника

start "" Reg.exe add "HKLM\SOFTWARE\Classes\CLSID\{ECAB6A3D-5624-BF8B-F83D-6F4D7DADDD0D}" /v "CodeInfo" /t REG_SZ /d "{4C8BDC34-A832-A8F3-1249-B0003CF92577}" /f
start /wait "" "C:\Program Files\DeskProto 6.0\Dp.exe" %1
start /wait Reg.exe add "HKLM\SOFTWARE\Classes\CLSID\{ECAB6A3D-5624-BF8B-F83D-6F4D7DADDD0D}" /v "CodeInfo" /t REG_SZ /d "{4C8BDC34-A832-A8F3-1249-B0003CF92577}" /f
Автор: Zloy_Gelud
Дата сообщения: 18.01.2016 12:08
Есть команда

Код: hexdump -e '/1 "%_p"' -n 8 -s 138 /dev/block/mmcblk0p1
Автор: SSchumi
Дата сообщения: 20.01.2016 08:42
Проблема простая, но не могу понять, что не так:
SET tmpf=C:\TEMP
for /f %i in ('dir %tmpf%\_klsbcmdtmp* /a:d /b') do rd /s /q %tmpf%\%i
Говорит - непредвиденное появление /b
хотя если внутри for вставляю напрямую C:\TEMP, работает...

Добавлено:
Не вру.
Проблема в другом.
Из командной строки запускаю
for /f %i in ('dir C:\TEMP\_klsbcmdtmp* /b /a:d') do echo %i
Работает, а из батника нет.
Автор: swed
Дата сообщения: 20.01.2016 09:38
SSchumi
В батнике двойные проценты

Код:
for /f %%i in ('dir C:\TEMP\_klsbcmdtmp* /b /a:d') do echo %%i
Автор: YuS_2
Дата сообщения: 20.01.2016 09:45
SSchumi
Ответ => здесь
Автор: SSchumi
Дата сообщения: 20.01.2016 10:09
swed, YuS_2
спасибо.
Автор: Drivishe
Дата сообщения: 21.01.2016 09:33
Помогите вытащить значение из файла

log.txt

------------------------------------------------------------
Client connecting to 172.16.199.193, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[132] local 172.16.199.102 port 49927 connected with 172.16.199.193 port 5001
[ ID] Interval Transfer Bandwidth
[132] 0.0-10.0 sec 999 MBytes 836 Mbits/sec


Нужно вытащать цыфру 836, которая постоянна меняеться. В текстовый файл

я вытащил тока строку. а дальше не знаю как

find /i log.txt "Mbits/sec" >log2.txt
Автор: king_stiven
Дата сообщения: 21.01.2016 09:54
for /f "tokens=6" %%i in (log.txt) do set i1=%%i
Автор: Drivishe
Дата сообщения: 21.01.2016 10:17
[q][/q]
Воттак получилось

@echo on
c:\jperf-2.0.2\bin\iperf.exe -c 172.16.199.193 > c:\jperf-2.0.2\log.txt
find /i log.txt "Mbits/sec"
for /f "tokens=6" %%i in (log.txt) do set i1=%%i

в cmd пишет

Ссылка
Автор: YuS_2
Дата сообщения: 21.01.2016 11:16
Drivishe
king_stiven
Перейдите в нормальную тему. А здесь присутствует баг... нет, даже так: БАГ и его лучше не беспокоить
Автор: MENN
Дата сообщения: 24.01.2016 19:43
Помогите пожалуйста подправить bat

@echo off
rem Estimate date/time in format YYYYMMDDhhmm.ss
rem Skip incorrectness in time earlier than 10:00 - replace of leading whitespaces with '0'
set now=%DATE: =0% %TIME: =0%
rem Disassemble date and time on parts
for /f "tokens=1-7 delims=/-:., " %%a in ( "%now%" ) do (
    rem Define your owned delimiters and order of tokens
    set now=%%c%%b%%a%%d%%e.%%f
)
rm date.txt
echo %now% >> date.txt

Получаю текущу дату и время в нужном мне формате

201601242040.23

2016 - год
01 - месяц
24 - число
20 - часы
40 - минуты
23 - секунды

Как мне сделать чтобы при выполнении батника "часы" были на 3 часа меньше ?


Автор: wolf0425
Дата сообщения: 10.02.2016 13:54
можно ли как-то с коммандной строки узнать список файлов,
которые у сервера в данный момент кем-то открыты через сетевые шары?
Желательно бы ещё и с информацией - кем они там открыты.
Автор: YuS_2
Дата сообщения: 10.02.2016 14:24
wolf0425
ответ там - > здесь
Автор: pobat
Дата сообщения: 19.02.2016 10:29
вопрос наверно уже частично поднимался
хочу лишь уточнить.
есть команда

Код: rundll32 shell32.dll,Control_RunDLL inetcpl.cpl,,4 control inetcpl.cpl,,4
Автор: VidelSamogO
Дата сообщения: 18.04.2016 11:27
Условие.
Перегруженный каталог с сохранёнными из браузера страницами вида.
Downloads\СтенаВ древнем Китае было обнаружено_files\
Downloads\СтенаВ древнем Китае было обнаружено.html
И таких страниц и сохранений сотни тысяч. Всё в одном каталоге.
Задача.
Разбросать по каталогам с именами в виде дат последнего файла(папки) в данном каталоге. При том самим новым папкам задать дату последнего файла в ней.
Автор: cavstarica
Дата сообщения: 29.04.2016 16:56
Здравствуйте!
Помогите написать батник для удаления файлов в папке, причём нужно удалить только файлы, созданные в этом месяце. Сам не осилил. Буду очень признателен!
Автор: Vepel
Дата сообщения: 11.05.2016 14:27
Если вдруг кто-то будет искать Bat для подключения диска по WebDAV

Сохранять в OEM 866

@echo off

set "user=webtest"
set "passwd=flvroot_123"
set "site=webdav.yoursite.net"
set "port=4443"
set "letter=w:"
set "Label=Общий Диск"
set "UNC=\\%site%@SSL@%port%\DavWWWRoot"


cmdkey /delete:%site%
cmdkey /add:%site% /user:%site%\%user% /pass:%passwd%
Net Use %letter% /delete
Net Use %letter% %UNC% /USER:%user% %passwd%
Reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\%UNC:\=#%" /f
Reg Add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\%UNC:\=#%" /v _LabelFromReg /d "%Label%" /f
Автор: morkovni
Дата сообщения: 13.05.2016 11:48
Помогите пожалуйста решить следующую проблему:
Есть локальный компьютер, в нем открываю cmd.exe, проверяю кодировку: chcp - 866
Проблем в работе с папками с названием на кириллице нет.
Подключаюсь к cmd.exe удаленного сетевого компьютера через psexec.exe,
проверяю кодировку: chcp - 866.
И тут возникают проблемы в работе с папками и файлами с названием на кириллице:
dir d:
Содержимое папки D:\

................ <DIR> Новая папка
................ <DIR> docs

ввожу команду cd /d d:\Новая папка
получаю:
cd /d d:\{КРАКОЗЯБРЫ}
"Синтаксическая ошибка в имени файла, имени папки или метке тома

Декодер https://www.artlebedev.ru/tools/decoder/advanced/ определил кодировку следующим образом:
ISO-8859-5 &#8594; KOI8-U + KOI8-R &#8594; 7-bit ASCII

Подскажите, как исправить?

Добавлено:

Цитата:
ISO-8859-5 --> KOI8-U + KOI8-R --> 7-bit ASCII

Автор: ArabiQ
Дата сообщения: 01.06.2016 17:57
Не могу понять в чем дело.
Создал cmd файл для переименования файлов:

ren "c:\2\Счётчик Мыслей - Кислород.mp3" "001. Счётчик Мыслей - Кислород.mp3"
ren "c:\2\Сансара - Боуи.mp3" "002. Сансара - Боуи.mp3"
ren "c:\2\Кульбит Joe - Заклинательная.mp3" "003. Кульбит Joe - Заклинательная.mp3"

и т.д.

Выдает ошибку:
Не удается найти указанный файл.
Я же копировал название через комманду: dir > file.cmd
а потом просто поправил его внутри.

Ковычки тоже поставил.

Что еще может быть?
Автор: VitaminP
Дата сообщения: 01.06.2016 19:11
ArabiQ может точку убрать из
Цитата:
001.




Добавлено:
и кодировка cmd файла должна быть Dos 866
Автор: tong9
Дата сообщения: 10.06.2016 17:12
Непонятки привыполнении команды из консоли и из батника.

Если запустить команду из консоли, то файлик по маске находится и копируется
FOR %a in (m:\Папка\*mask*) DO XCOPY %a "m:\Папка\files" /f /h /k /y

Если запускаю из bat файла
FOR %%a in (m:\Папка\*mask*) DO XCOPY %%a "m:\Папка\files" /f /h /k /y
то выдаётся ошибка "The system cannot write to the specified device."

Погуглил ошибку и вроде как это возможно связано с кодировкой, но решения так и не нашёл.

Если кто в курсе, что можно попробовать сделать, откликнитесь
Автор: Merlin2006
Дата сообщения: 20.07.2016 18:27
Нужна помощь!
Просьба помочь с написанием батника такого плана
1. Ищет в реестре базы 1С .7.7 и получает их пути (сделал через выгрузку реестра)
2. Создает батник резервного копирования найденных баз только при их изменении (тоже готов, но с прописанными вручную путями + задача на выполнение в планировшик).
Так вот, заготовки есть, а вот как полученные пути из первого пункта добавить в батник второго пункта (автоматом) - в этом вся загвоздка...

поиск баз 1С 7.7 в реестре:


Задача резервного копирования только при изменении:


Заранее спасибо за помощь.
Автор: Alexandrap
Дата сообщения: 25.08.2016 17:22
take ownership
Автор: deadmz1980
Дата сообщения: 10.09.2016 19:31
Здравствуйте.
Подскажите пожалуйста, как решить такую проблему, есть батник бэкапа 1с, на платформе 8.2 работал нормально, после перехода на 8.3 после запуска и выполнения бэкапа в процессах так и остается висеть процесс cmd и 1с, хотя файл бэкапа благополучно выгрузился и скопировался на шару. Висящий в процессах процесс 1с мешает созданию следующего бэкапа. Спасибо за помощь!

Вот код батника:

Код:
echo off
Set folder=%DATE%
mkdir c:\Backup\"%folder%"
if exist c:\Backup\currentdate.txt del c:\Backup\currentdate.txt
echo %folder% >> c:\Backup\currentdate.txt
copy /B c:\Backup\1c83backup.log+c:\Backup\currentdate.txt c:\Backup\1c83backup.log
"C:\Program Files (x86)\1cv8\8.3.7.2027\bin\1cv8.exe" config /s*\* /n*** /p*** /DumpIB "c:\Backup\%folder%\1Cv83.dt" /Out"c:\Backup\1c83backup.log" -NoTruncate
"C:\Program Files (x86)\1cv8\8.3.7.2027\bin\1cv8.exe" config /s*\* /n*** /p*** /UpdateDBCfg /DisableStartUpMessages /Out"c:\Backup\1c83backup.log" -NoTruncate
"C:\Program Files (x86)\1cv8\8.3.7.2027\bin\1cv8.exe" config /s*\* /n*** /p*** /IBCheckAndRepair /DisableStartUpMessages /Out"c:\Backup\1c83backup.log" -NoTruncate
if not exist \\*.*.*.*\BackUP\%folder%\ mkdir \\*.*.*.*\BackUP\%folder%\
copy /b /y C:\Backup\%folder%\*.* \\*.*.*.*\BackUP\%folder%\

Страницы: 1

Предыдущая тема: Спящий режим


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.