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

» Задачи на bat-файлах 5

Автор: Nagual
Дата сообщения: 19.03.2008 12:28
Задачи на bat-файлах 5
(часть 1, часть 2, часть 3 , часть 4)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.


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

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

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


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

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

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

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

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


· Cmd. Описание от разработчиков (англ.) (рус.)
· Урок bat-аники (для начинающих)
· Командная строка и сценарии Windows - уроки
· Библиотека функций для командных файлов
· Использование ansi.sys
· Справка по командам в виде Html
· Команды RunDll32
· Пример - получение и обработка списка пользователей
[/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 - скрытый запуск командных файлов и консольных программ
· mirror - копирование, создание точной копии всей структуры директорий
· msgbox - вывод сообщения в диалоговом окне
· msgbox (другая) - еще одна утилита для вывода сообщения в диалогоовм окне
· mtee - выводит входящие данные на экран и в файл (одновременно)
· netcat - мощная утилита для передачи данных по TCP/UDP соединениям
· nircmd - универсальная утилита на все (почти) случаи жизни
· outwit - пакет из 6-ти полезных GNU Win32 утилит
· portqry - проверка статуса TCP и UDP портов на удаленных машинах
· PsTools - отличный набор утилит для администрирования
· ptime - определяет время работы программ (точность до 5 миллисек.)
· Quick Batch File Compiler - позволяет превратить ваш батник в независимое приложение
· regperm - изменение прав доступа к веткам/ключам реестра
· rmtshare - управление шарами
· 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-файлах
[/more][/b]


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

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


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

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


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

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


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

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


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

Описания работы команд и символов участниками темы:
· setlocal enabledelayedexpansion и переменные окружения
· символы & и && в командной строке
· Переменная %0
Автор: Elroir
Дата сообщения: 19.03.2008 13:02
Nagual
А название топика поменять?
Часть то уже пятая.

Добавлено:
И вообще - обычно модераторы открывают продолжение, а заодно и шапку прибивают.
Автор: Nagual
Дата сообщения: 19.03.2008 14:06
Elroir
пока модеров дождешься...
отредактируй как считаешь нужным, у тебя же есть доступ
Автор: Elroir
Дата сообщения: 19.03.2008 14:33
Nagual
Не могу - шапки же нет . Отредактировать первый пост (ну и название) может только автор.
Автор: Rush
Дата сообщения: 19.03.2008 15:04
Такой вопрос - можно ли получить занятые буквы дисков с выводом в файл БЕЗ использования FSO (вообще любых ActiveX)?
Автор: pgofman2
Дата сообщения: 19.03.2008 15:08
Ну наконецто - новый раздел открыли
Автор: Elroir
Дата сообщения: 19.03.2008 15:31
Rush

Код:
@echo off
setlocal enabledelayedexpansion
echo list volume>"%temp%\ds.txt"
for /f "skip=8 tokens=3" %%a in ('diskpart /s "%temp%\ds.txt"') do set "used=!used! %%a"
del /q "%temp%\ds.txt" 2>nul
echo The used letters are - %used:~1%
Автор: Rush
Дата сообщения: 19.03.2008 16:09
Elroir
Хоть убей, не создается файл с drive letter. Ну если, конечно, убрать
Код: del /q "%temp%\ds.txt" 2>nul
Автор: 01MDM
Дата сообщения: 19.03.2008 16:11
Rush
Еще вариант

Код:
@echo off
for /f "tokens=1 delims=\" %%i in ('fsutil fsinfo drives ^| more') do call:write "%%i"
goto:eof

:write
set d=%~1
echo %d:~-2,2% >>1.txt
Автор: Elroir
Дата сообщения: 19.03.2008 16:15
Rush
Вообще-то мой код и не должен создавать файл с используемыми буквами. Он их просто выводит в консоль. Чтобы выводить в файл, скажем used_letters.txt, замени последнюю строчку кода :

Код: echo %used:~1%>used_letters.txt
Автор: Rush
Дата сообщения: 19.03.2008 16:17
01MDM
Твой вариант пишет отлично.
А нельзя ли, чтобы еще и тип выводил?

Простите уж, сразу не сообразил спросить...

Добавлено:
Elroir

Цитата:
Вообще-то мой код и не должен создавать файл с используемыми буквами. Он их просто выводит в консоль.

Так ведь я плаваю в этом деле. Чайник-с...
Кстати, твой код выдает только физические диски. А у 01MDM и виртуальные. Полезно и то и другое...
Автор: 01MDM
Дата сообщения: 19.03.2008 16:37
Rush

Цитата:
А нельзя ли, чтобы еще и тип выводил?

Ну как-нибудь так

Код:
@echo off

for /f "tokens=1 delims=\" %%i in ('fsutil fsinfo drives ^| more') do (
    call:write "%%i"
)
goto:eof

:write
set d=%~1
for /f "tokens=*" %%i in ('fsutil fsinfo drivetype %d:~-2,2%') do (
    call:convert_1251 "%%i"
    echo %dd% >>1.txt
    chcp 866 >nul
)
goto:eof

:convert_1251
chcp 1251 >nul
set dd=%~1
Автор: Rush
Дата сообщения: 19.03.2008 16:47
01MDM
Все хорошо, но последний диск перестал цеплять.
Автор: 01MDM
Дата сообщения: 19.03.2008 16:58
Rush

Исправил:

Код:
@echo off

:: setlocal - опционально
setlocal

for /f "tokens=1 delims=\" %%i in ('fsutil fsinfo drives ^| more') do (
call:write "%%i"
)
goto:eof

:write
set d=%~1
for /f "tokens=*" %%i in ('fsutil fsinfo drivetype %d:~-2,2%') do (
call:convert_1251 "%%i"
chcp 866 >nul
)
goto:eof

:convert_1251
chcp 1251 >nul
set dd=%~1
echo %dd% >>1.txt
Автор: Rush
Дата сообщения: 19.03.2008 17:07
01MDM
Отлично. Все, больше не надоедаю.
Автор: SelenaNight
Дата сообщения: 19.03.2008 22:19
igor_andreev

Цитата:
Просто remotehelp, без literal

упс...

Код: ftp> REMOTEHELP
214-The following commands are recognized (* =>'s unimplemented):
CWD XCWD CDUP XCUP SMNT* QUIT PORT PASV
EPRT EPSV ALLO* RNFR RNTO DELE MDTM RMD
XRMD MKD XMKD PWD XPWD SIZE SYST HELP
NOOP FEAT OPTS AUTH CCC* CONF* ENC* MIC*
PBSZ PROT TYPE STRU MODE RETR STOR STOU
APPE REST ABOR USER PASS ACCT* REIN* LIST
NLST STAT SITE
214 Direct comments to root@srv84.chat.ru
Автор: HW2yS
Дата сообщения: 20.03.2008 03:17
Nagual
не пашет
как я понял ему не хватает пути к VM-у
делает "C:\Program Files\Microsoft Virtual PC\Virtual PC.exe" -registervm "2596_1-Glasgow_DC.vmc"
а надо "C:\Program Files\Microsoft Virtual PC\Virtual PC.exe" -registervm "C:\Program Files\Microsoft Learning\2596\Drives\2596_1-Glasgow_DC.vmc"
приложил принтскрин на всякий случай если ещё не надоел
Автор: Elroir
Дата сообщения: 20.03.2008 03:25
HW2yS
В конце строчки for-a, поставь вместо "%%a" "%%~fa"
Автор: HW2yS
Дата сообщения: 20.03.2008 03:46
Nagual
Elroir
спасибо огромное именно это и было нужно !!
а то я с этими for do не дружу
Автор: igor_andreev
Дата сообщения: 20.03.2008 05:34
SelenaNight

Цитата:
Что из этого использовать надо?

Честно говоря, думаю у тебя два выхода. Или использовать другой бесплатный сервер, поддерживающий нормальную закачку по ftp, или использовать другой клиент.
Я попробовал в Far-e создать соединение с ftp.chat.ru, пока не поставишь галочки Passive mode и Use firewall - не соединишься.

Есть такая утилита с дружелюбным консольным интерфейсом, ftps.exe (MoveIt Freely) Основной синтаксис у нее один-в-один как у стандартной ftp.exe, но она еще и SSL поддерживает и "also includes support for firewall-friendly Passive FTP"(как это по русски?). Запускается абсолютно так-же, как и штатная:
ftps -s:script.txt

script.txt
Код:
open ftp.chat.ru
user
pass
passive
put test.txt
quit
Автор: JohnRD
Дата сообщения: 20.03.2008 10:11
добрый день/вечер

можно ли сделать и как
чтобы один батник разбирал другой текстовый, который в кодировке unicode


Автор: slayer120
Дата сообщения: 20.03.2008 10:46
Подскажите уважаемые, можно ли из батника включать выключать дрова уствройства в частности сетевой карты? Проблем такая:
есть комп 2003 сервак с 2-3 сетевыми интерфейсами. Периодически падает сетка - не идут пинги. Сетевой интерфейс не выключается - пинет типа заняь драйвер , либо неправильный юзер пароль. Рекомендации по политикамЮ отключению служб не помогли. Похоже дело в дровах - карты все realtek 8139, sms -100 . Дрова к ним только для 2000. В общем выяснилось, после того как вырубаешь сетевку через дрова все работает.
Поэтому нужен скрипт:
1) периодически проверяет все интерфейсы пингом (на форуме это есть).
2) если пинга нет - вырубить врубить дрова на соответствующей карте.
Реален ли второй вопрос из комстроки пусть с использованием дополнительного софта?
Автор: vovikgr
Дата сообщения: 20.03.2008 12:47
проблема не могу закинуть по фтп все файлы в папке
закидывает только один файл
файл 1

ftp -s:put.txt

_____________________
файл 2 put.txt

open 192.168.36.1
user
pass
cd папка
bin
hash
prompt
put диск:\папка\*.rar
quit


to
igor_andreev
спасибо большое
Автор: igor_andreev
Дата сообщения: 20.03.2008 13:00
vovikgr
put и должна закидывать один файл. Несколько файлов закидывает mput

Добавлено:
slayer120
devcon пробовал? В шапке, полезные утилиты.
Автор: vovikgr
Дата сообщения: 20.03.2008 13:11
а можно как нить сделать чтоб он сравнивал название файла то есть если на ftp такой файл уже есть то заливать этот файл не надо ?
Автор: JohnRD
Дата сообщения: 20.03.2008 13:31
подскажите пожалуйста
почему gsar не может выполнить такое:
gsar -s"appdata" -r"%APPDATA%" -F >
пишет следующее
gsar: command error, not a valid decimal number : \Do

<PROPERTY NAME="PRODUCTDATADIR">appdata\Hewlett-Packard\OpenView\Service Desk\</PROPERTY>
---------

такое выполняет
gsar -s"user" -r"%USERNAME%" -F >

Автор: AlessTO
Дата сообщения: 20.03.2008 13:51
Hi, all
Подскажите как сделать бэкап сетевого подключения (профиля?):
соединение - LAN, корпоративный прокси (требуется бэкап соединения по LAN).
где-то я видел такой батник..

И второе: как сделать обратную колбасу - восстановить..

фильтром, поиском не нашел (если что - пните в нужном направлении).
Спасибо.
Автор: igor_andreev
Дата сообщения: 20.03.2008 14:16
vovikgr
в скрипт вставь:
Код: ls *.* C:\ftpfiles.txt
Автор: AlessTO
Дата сообщения: 20.03.2008 14:17
зы. поправьте, пожалуйста, ссылку в шапке (часть 4) на http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=0
Автор: JohnRD
Дата сообщения: 20.03.2008 14:35
igor_andreev

спасибо огромное
хорошо быть умным

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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