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

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

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

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers
А если там ветка директорий и где-нибудь в глубине есть еще один файл с таким названием?


----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:58 02-02-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Проверил код mozers - работает и с
Цитата:
в глубине есть еще один файл с таким названием?

Уже сохранил себе - а вдруг понадобится!

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 19:45 02-02-2009
Zakkazak



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

Цитата:
Zakkazak  
У Maza_Faka там не зря кавычки после /wait стоят.
хитро и работает, я думал это для редактора Мазафака поставил.

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 20:45 02-02-2009
Kilyan



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

Цитата:
Elroir  
Извини, уважаемый, но с задачкой поиска файлов по неизвестному пути что то ты перемудрил...
Код:@ECHO OFF  
SET folder=\\Server\Folder1  
SET file=xfile.txt  
FOR /F %%i IN ('dir "%folder%\%file%" /s /b /a:-d') DO ECHO %%i

Работает отменно но есть глюк, если в поддиректориях встречается каталог с русским или латинским именем и в нем будет пробел(например "Мои документы"). Файл от сюда не выведет, а концом вывода будет бла-бла\Мои. Как исправить? Примерчик понадобился однако!

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 23:05 02-02-2009 | Исправлено: Kilyan, 23:06 02-02-2009
Elroir



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

Цитата:
Как исправить?


Код:
 
FOR /F "tokens=*" %%i IN ('dir "%folder%\%file%" /s /b /a:-d') DO ECHO %%i
 



----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:20 03-02-2009
VergilDevil



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется каталог с файлами. Нужно имена файлов выписать в ряд, но так, чтобы перед именем был какой нибудь текст. Ну например:
Папка с файлами.
Получаем:
фигня pesnja.mp3
фигня kartinka.jpg
...
Ну и т.д. Надеюсь понятно выразился =)

Всего записей: 11 | Зарегистр. 01-01-2009 | Отправлено: 00:42 03-02-2009
Kilyan



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

Хвала вам! что вы тут выручаете! с пол пинка - и все летает! ... Вот бы еще шапка восполнялась нужными примерчиками - чтоб на примерах можно было найти что то для себя, и возможно не дублируя через время одно и тоже (это мое пожелание авось кто и услышит)

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 00:43 03-02-2009
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilyan
Загляни в шапку топика "Задачи на bat-файлах". Там много чего интересного
 
Добавлено:
VergilDevil

Код:
 
@echo off
chcp 1251>nul
for %%a in (*.*) do echo фигня %%a>>list.txt
 


----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:06 03-02-2009
VergilDevil



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

Всего записей: 11 | Зарегистр. 01-01-2009 | Отправлено: 01:12 03-02-2009
xlopik

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Эсть такая проблема. Нужно написать батник который будет проверять включена ли сетевая карта (есль не то включить), и проставлять айпи.
С айпи розабрался, но только под ХР под Висту не канаэт
А как включать

Всего записей: 3 | Зарегистр. 04-02-2009 | Отправлено: 13:58 04-02-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Помогите решить, а точнее дополнить уже найденный код батникаПодробнее... в котором переименовывается существующий файл, если таковой существует.
Дополнить: переименовывать до уазанного числа, а именно - на примере резервного копирование nnBackup - замещая текущий архив новым и т.д.

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 22:57 04-02-2009
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilyan
Я никогда не работал с nnBackup. Видимо поэтому я даже не понимаю, что надо сделать.

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:48 05-02-2009
Dekabryi



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zakkazak
 
вот тебе пример
Подставь сюда свои значения
start /wait notepad
start /wait calc

Всего записей: 44 | Зарегистр. 29-05-2006 | Отправлено: 06:12 05-02-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Хорошо.теперь подробнее:
укажем кол-во допустимых инкрементов=2
Указываем файл=файл1, проверяем его на галичие если находим переименовываем (с файл1 в файл1_1), при следующем запуске опять проверка, но если находим файл1 и файл1_1 то файл один1_1 должен стать файл1_2, файл1 должен стать файл1_1 ну а файл файлом1.
Тким образом - переименование файлов будет идти до указанной точки и старые файлы могут затираться новыми.  
И всегда файлов будет в этом случае 3 (текущий фай1,файл1_1, файл1_2)
в этом же  примере идет просто инкрементное добавление следующего значения.
ну гдето так!

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 08:23 05-02-2009 | Исправлено: Kilyan, 08:37 05-02-2009
Maza_Faka



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

Цитата:
батник который будет проверять включена ли сетевая карта (есль не то включить)

Можно используя утилиту devcon.exe

Код:
 
@Echo Off
 
Set "DevName=Realtek RTL8139 Family PCI Fast Ethernet NIC"
Set TmpFile=~tmp.txt
Set Count=0
 
Setlocal enabledelayedexpansion
 
devcon hwids =net>%TmpFile%
Type %TmpFile% | Find "%DevName%">nul || Exit
 
For /F "Tokens=*" %%A In (%TmpFile%) Do (
    Set /A Count+=1
    Echo "%%A" | Find "Name: %DevName%">nul && GoTo :IDSet
    )
GoTo :EOF
 
:IDSet
Set /A Count+=1
For /F "Skip=%Count% Tokens=*" %%A In (%TmpFile%) Do Set ID="%%A" && GoTo :DevDisable
GoTo :EOF
 
:DevDisable
devcon status %ID% | Find /I "disabled">nul && devcon enable %ID%
del /f /q %TmpFile%>nul
 

Переменной DevName присваиваешь имя сетевого адаптера (можно посмотреть в "Диспетчере устройств")
 
To all
Есть ли методы выхода из цикла For без использования GoTo?

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:17 05-02-2009 | Исправлено: Maza_Faka, 11:19 05-02-2009
Elroir



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

Цитата:
Есть ли методы выхода из цикла For без использования GoTo?

Нет.
Только если вынести for в отдельный блок (call :forLoop), можно прервать командой "exit /b"

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:08 05-02-2009
hanssliver

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

Код:
 
dir "C:\Program Files (x86)\Autodesk\Backburner\"
@cmdow @ /hid
timeout 80
start /low /MIN server.exe
 

но server.exe блокируется брандмауэром, естественно оно в списке исключений
где косяк?

Всего записей: 50 | Зарегистр. 04-05-2008 | Отправлено: 21:15 05-02-2009 | Исправлено: hanssliver, 21:19 05-02-2009
xlopik

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

Цитата:
xlopik
 
Цитата:
батник который будет проверять включена ли сетевая карта (есль не то включить)
 
Можно используя утилиту devcon.exe
 
Код:
 
@Echo Off
 
Set "DevName=Realtek RTL8139 Family PCI Fast Ethernet NIC"
Set TmpFile=~tmp.txt
Set Count=0
 
Setlocal enabledelayedexpansion
 
devcon hwids =net>%TmpFile%
Type %TmpFile% | Find "%DevName%">nul || Exit
 
For /F "Tokens=*" %%A In (%TmpFile%) Do (
    Set /A Count+=1
    Echo "%%A" | Find "Name: %DevName%">nul && GoTo :IDSet
    )
GoTo :EOF
 
:IDSet
Set /A Count+=1
For /F "Skip=%Count% Tokens=*" %%A In (%TmpFile%) Do Set ID="%%A" && GoTo evDisable
GoTo :EOF
 
evDisable
devcon status %ID% | Find /I "disabled">nul && devcon enable %ID%
del /f /q %TmpFile%>nul
 
 
Переменной DevName присваиваешь имя сетевого адаптера (можно посмотреть в "Диспетчере устройств")  

а как сделать для универсальной сетевой карты?

Всего записей: 3 | Зарегистр. 04-02-2009 | Отправлено: 21:24 05-02-2009
An0xiety

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток.  
Нужно через батник, в текстовом файле, пред строками которые начинаются на Logfile.. вставлять символ # (т.е. комментировать их) и сохранять в тот же файл. Причем, при 1-м проходе надо, чтоб все строки с логами комментировались, а при 2-м, - разкомментировались. Надо реализовать без помощи посторонних утилит. 3-й день бьюсь, не могу решить.

Всего записей: 25 | Зарегистр. 16-02-2008 | Отправлено: 04:38 06-02-2009
Maza_Faka



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

Цитата:
а как сделать для универсальной сетевой карты?

Можно передавать имя сетевой карты батнику в качестве параметра:
net_enable.bat "Realtek RTL8139 Family PCI Fast Ethernet NIC"
 

Код:
 
@Echo Off
 
If "%~1"=="" Exit
 
Set "DevName=%~1"
Set TmpFile=~tmp.txt
Set Count=0
 
Setlocal enabledelayedexpansion
 
devcon hwids =net>%TmpFile%
Type %TmpFile% | Find "%DevName%">nul || Goto :EOF
 
For /F "Tokens=*" %%A In (%TmpFile%) Do (
    Set /A Count+=1
    Echo "%%A" | Find "Name: %DevName%">nul && GoTo :IDSet
    )
GoTo :EOF
 
:IDSet
Set /A Count+=1
For /F "Skip=%Count% Tokens=*" %%A In (%TmpFile%) Do Set ID="%%A" && GoTo :DevDisable
GoTo :EOF
 
:DevDisable
devcon status %ID% | Find /I "disabled">nul && devcon enable %ID%
del /f /q %TmpFile%>nul
 

 
Добавлено:
An0xiety

Цитата:
Нужно через батник, в текстовом файле, пред строками которые начинаются на Logfile.. вставлять символ # (т.е. комментировать их) и сохранять в тот же файл

Проще и быстрее решить эту задачку с помощью SED.EXE

Код:
 
Type test.txt | sed "s/^Logfile/#Logfile/g">out.txt
 

Если же использовать сторонние утилиты карма не позволяет, то можно так:

Код:
 
@Echo Off
 
For /F "Delims=" %%A In (Test.txt) Do (
  Echo %%A | Findstr /i "^Logfile">Nul 2>&1 && Echo #%%A>>Out.txt || Echo %%A>>Out.txt
)
 

:)
 
Добавлено:
hanssliver

Цитата:
но server.exe блокируется брандмауэром, естественно оно в списке исключений  
где косяк?

Если запустить код из ком. строки, что происходит?

Код:
 
start /low /MIN server.exe
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:05 06-02-2009 | Исправлено: Maza_Faka, 09:35 06-02-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 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru