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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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)

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



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

Цитата:
вместо ? в расширениях цифры

Маска .xdb? предполагает что цифра одна, если их несколько, то надо использовать маску .xdb?*, или, если к-во цифр известно, .xdb??? (??? - 3 цифры)

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 23:50 29-04-2020 | Исправлено: NIKZZZZ, 00:18 30-04-2020
m00slim25



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

Цитата:
Маска .xdb? предполагает что цифра одна, если их несколько, то надо использовать маску .xdb?*, или, если к-во цифр известно, .xdb??? (??? - 3 цифры)

И?! Это и ежу понятно. Что Вы хотели этим сказать? Конкретизируйте.

Всего записей: 877 | Зарегистр. 30-05-2006 | Отправлено: 00:21 30-04-2020 | Исправлено: m00slim25, 00:21 30-04-2020
NIKZZZZ



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

Цитата:
И?! Это и ежу понятно. Что Вы хотели этим сказать? Конкретизируйте.


Цитата:
Вопрос первый: почему не работает простая, казалось бы, конструкция?
 
Код:
For %%i In ("*.xdb?") Do (Set "_tmpext=%%~xi")
 
Переменная _tmpext остаётся пустой всё время.  

 
Не работает из-за неправильно указанной маски файлов
 

Код:
For %%i In ("*.xdb?*") Do (Set "_tmpext=%%~xi")

 

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:28 30-04-2020 | Исправлено: NIKZZZZ, 00:30 30-04-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
m00slim25
Зато ежу непонятен ваш вопрос. Что находится в каталоге, где выполняется команда?

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

Всего записей: 3075 | Зарегистр. 18-04-2005 | Отправлено: 00:28 30-04-2020
Death_INN

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

Цитата:
почему не работает простая, казалось бы, конструкция?  
 
Код:
For %%i In ("*.xdb?") Do (Set "_tmpext=%%~xi")
 
Переменная _tmpext остаётся пустой всё время.

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

Всего записей: 2251 | Зарегистр. 24-10-2002 | Отправлено: 00:33 30-04-2020 | Исправлено: Death_INN, 00:36 30-04-2020
m00slim25



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

Цитата:
(вместо ? в расширениях цифры)

Ок. Выражусь яснее: вместо ? в расширениях одна цифра или одна буква.
 

Цитата:
Потестил. У мя не пустая. Правильно пути задавай или батник ложи в тот каталог, в котором ищешь

Все условия выполнены. Скрипт в папке с файлами. Из командной строки так же не работает. Я не знаю в чём проблема...
 
Echo %%~xi печатает расширения всех файлов по порядку, Echo %_tmpext% печатает ECHO is off.
 

Код:
@Echo Off
For %%i In (*.xdb?) Do (Set _tmpext=%%~xi & Echo %_tmpext% & Echo %%~xi)


Код:
ECHO is off.
.xdb0
ECHO is off.
.xdb1
ECHO is off.
.xdb0
ECHO is off.
.xdb1
ECHO is off.
.xdb2
ECHO is off.
.xdb3

Всего записей: 877 | Зарегистр. 30-05-2006 | Отправлено: 08:53 30-04-2020 | Исправлено: m00slim25, 09:11 30-04-2020
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
m00slim25
У Вас переменная внутри цикла for используется, надо включать отложенное раскрытие.

Код:
@Echo Off
setlocal enabledelayedexpansion
For %%i In (*.xdb?) Do (Set _tmpext=%%~xi & Echo !_tmpext! & Echo %%~xi)

Всего записей: 550 | Зарегистр. 11-10-2004 | Отправлено: 09:41 30-04-2020
m00slim25



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

Цитата:
У Вас переменная внутри цикла for используется, надо включать отложенное раскрытие.

Действительно. Вы оказались правы. Благодарю за наводку.

Всего записей: 877 | Зарегистр. 30-05-2006 | Отправлено: 19:29 30-04-2020
Tadk

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день, пытаюсь разобраться, что означает этот отрывок скрипта:
 
    
REM ### Uebergabeparameter & Sonstiges #############################
    echo "Uebergabeparameter 1   (Product): %~1"
    echo "Uebergabeparameter 2 (ODIS Path): %~2"
    echo "Uebergabeparameter 3            : %~3"
    echo.
    for /f "tokens=*" %%i in ('ver') do set WindowsBuildNumber=%%i
    echo "    Windows Version: %WindowsBuildNumber%"
    echo "Aktueller Dateipfad: %~dp0"
    echo "     Aktuelle Datei: %0"
 
cd %~dp0
set ODIS_product=%~1
set ODIS_path=%~2

Всего записей: 108 | Зарегистр. 28-05-2009 | Отправлено: 17:34 09-05-2020
BorlandIMHO

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

Цитата:
Добрый день, пытаюсь разобраться, что означает этот отрывок скрипта:

Выводятся три параметра запуска скрипта, пустая строка, версия винды, путь к скрипту, имя скрипта.
Меняется текущий путь на путь к скрипту, задаются переменные на основе параметров запуска.
Что тут непонятно-то?
Для этого даже немецкий знать не нужно...

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

Всего записей: 1240 | Зарегистр. 12-10-2006 | Отправлено: 14:25 10-05-2020
MihailM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А можно ли сделать такое : есть куча файлов, их нужно все прошерстить на предмет поиска опр. слова , если слово есть , то строчку полностью скопировать ниже. то есть след. строчкой и изменить первое слово .
Пример :  
исходник  
w1 w2
как нужно сделать  
w1 w2
w3 w2  
 
И если батником не получится , чем такое можно сделать . Регулярка такое может сделать ?
Чтоб потом скажем , через нотепад++ такое проделать .

Всего записей: 2303 | Зарегистр. 19-10-2003 | Отправлено: 12:35 11-05-2020 | Исправлено: MihailM, 10:12 12-05-2020
Jonmey

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

Цитата:
чем такое можно сделать

powergrep, textpipe запросто справятся с подобной задачей.

Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 12:38 11-05-2020
MihailM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey, ага , только одно но , они все платные ..
 
Ладно посмотрим , а примера нет , как это сделать ?
 
Добавлено:
поправил как нужно чтоб было ..

Всего записей: 2303 | Зарегистр. 19-10-2003 | Отправлено: 12:51 11-05-2020 | Исправлено: MihailM, 12:51 11-05-2020
Tadk

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO спасибо за ответ, я пытаюсь вникнуть по мере возможности,я правильно понял,
что здесь есть ограничение на установку windows x86:
 
REM ### Uebergabeparameter & Sonstiges #############################
    echo "Uebergabeparameter 1   (Product): %~1"
    echo "Uebergabeparameter 2 (ODIS Path): %~2"
    echo "Uebergabeparameter 3            : %~3"
    echo.
    for /f "tokens=*" %%i in ('ver') do set WindowsBuildNumber=%%i
    echo "    Windows Version: %WindowsBuildNumber%"
    echo "Aktueller Dateipfad: %~dp0"
    echo "     Aktuelle Datei: %0"
 
cd %~dp0
set ODIS_product=%~1
set ODIS_path=%~2
 
REM ### Architektur ermitteln ###########################
ECHO "Check for Windows 64Bit / 32Bit:"
if not defined ProgramFiles(x86) ( GOTO WRONG_ARCHITECTURE )
ECHO "     Windows 64Bit"
ver
 
 

Всего записей: 108 | Зарегистр. 28-05-2009 | Отправлено: 19:38 11-05-2020
BorlandIMHO

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

Цитата:
я правильно понял, что здесь есть ограничение на установку windows x86

Ну, оно, вроде бы, вполне ясно написано, что "если не 64 бит, то GOTO НЕПРАВИЛЬНАЯ_АРХИТЕКТУРА"...
Особенно радует последняя команда (ver): десятком строчек выше она уже использовалась.
Как нетрудно догадаться, за этот десяток строчек никаких изменений в выводе команды произойти не могло...

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

Всего записей: 1240 | Зарегистр. 12-10-2006 | Отправлено: 21:43 11-05-2020
Jonmey

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

Цитата:
ага , только одно но , они все платные ..  

Можно любой текстовый редактор использовать, который поддерживает пакетную обработку, регэкспы и скрипты/макросы автоматизации.
Главное, что вам нужно понять - ваша задача априори многошаговая и проблема заключается лишь в автоматизации последовательного выполнения этих шагов на массиве файлов.
Технически и батники (со вставками whs, vbs или js) можно использовать, но задача, хоть и несложная, но слишком частная, чтобы на нее тратить время, отлаживая готовый вариант, ради, как правило, однократного использования отдельным юзером.
Хотя, конечно, всегда есть шанс, что тут найдется кто-то изнывающий от скуки, и предоставит вам готовый вариант (предварительно изрядно попотев, вытаскивая из вас все подробности вашего ТЗ).
Цитата:
Ладно посмотрим , а примера нет , как это сделать ?
Например, в powergrep есть библиотека с различными примерами, иллюстрирующими тот или иной прием. Не говоря об очень хорошей справке к программе.
Разбейте свою задачу на простые шаги (Аctions), как если бы вы вручную выполняли операции для одного файла в текстовом редакторе, а затем объедините эти шаги в Sequence и обработайте им весь массив файлов.

Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 23:01 11-05-2020
Tadk

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO еще раз спасибо за помощь, для обхода ограничения можно так отредактировать:
 
REM ### Uebergabeparameter & Sonstiges #############################
    echo "Uebergabeparameter 1   (Product): %~1"
    echo "Uebergabeparameter 2 (ODIS Path): %~2"
    echo "Uebergabeparameter 3            : %~3"
    echo.
    echo "    Windows Version: %WindowsBuildNumber%"
    echo "Aktueller Dateipfad: %~dp0"
    echo "     Aktuelle Datei: %0"
 
cd %~dp0
set ODIS_product=%~1
set ODIS_path=%~2
 
REM ### Architektur ermitteln ###########################
ECHO "Check for Windows 64Bit / 32Bit:"
Goto End

Всего записей: 108 | Зарегистр. 28-05-2009 | Отправлено: 23:45 11-05-2020
MihailM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey
Цитата:
Разбейте свою задачу на простые шаги (Аctions)

Знать бы еще это и что это , просто и так у меня забита всякой ерундой , а эту еще инфу мой мозг уже не потянет %))
 
А так не надо уже сам состряпал - пришлос через прогу делать .. Не успел написать..
Спасибо за советы итд..  
 

Всего записей: 2303 | Зарегистр. 19-10-2003 | Отправлено: 10:17 12-05-2020 | Исправлено: MihailM, 10:35 12-05-2020
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihailM
 
Типа того?  
 

Цитата:
@echo off
for /f "tokens=1-3 delims=: " %%A in ('FINDSTR /X /C:"Hello world" *.txt') do (
echo %%B %%C
echo Goodbye %%C
)  

 
А лучше так (первый вариант будет некорректно работать, если в имени файла есть пробелы)
 

Цитата:
@echo off
for /f "tokens=1-2 delims= " %%A in ('FIND "Hello world" *.txt ^| FINDSTR /X /C:"Hello world"') do (
echo %%A %%B
echo Goodbye %%B
)  


Всего записей: 405 | Зарегистр. 12-09-2017 | Отправлено: 16:57 12-05-2020 | Исправлено: Fenrizz, 17:49 12-05-2020
MihailM

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

Всего записей: 2303 | Зарегистр. 19-10-2003 | Отправлено: 19:18 12-05-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

Компьютерный форум 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru