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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sinclair83
Скрипт после замены адресов и ID устройства почему-то не срабатывает, попробовал напрямую через devcon restart "PCI\VEN_10EC&DEV_8168&SUBSYS_85541043&REV_0C"  - также выдаёт "no devices restarted", хотя ID скопировано верно.

Всего записей: 956 | Зарегистр. 17-04-2007 | Отправлено: 16:45 04-07-2017
Sinclair83

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
crotoff
извини, давно было. Попробуй эту версию с относительными путями (не прописаны жёстко как в 1м варианте).

Код:
var WshShell = WScript.CreateObject("WScript.Shell");
var FileSystem = new ActiveXObject("Scripting.FileSystemObject");
var sf = FileSystem.GetFolder(".") + "\\status";
 
var strDesktop = WshShell.SpecialFolders("Desktop");
var oShellLink = WshShell.CreateShortcut(strDesktop + "\\Internet.lnk");
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WorkingDirectory = FileSystem.GetFolder(".")
 
if (FileSystem.FileExists(sf))  
{
WshShell.Run("devcon disable \"PCI\\VEN_xxxx&DEV_yyyy&REV_zz\"",0);
oShellLink.IconLocation = FileSystem.GetFolder(".") + "\\Icon_0.ico, 0";
FileSystem.GetFile(sf).Delete();
}  
else  
{
WshShell.Run("devcon enable \"PCI\\VEN_xxxx&DEV_yyyy&REV_zz\"",0);
oShellLink.IconLocation = FileSystem.GetFolder(".") + "\\Icon_1.ico, 0";
FileSystem.CreateTextFile(sf, true).Close ();
}
 
oShellLink.Save();

испытал на win-7. Переключает.
Остальных прошу извинить за
 
Добавлено:
из консоли также переключает.

Всего записей: 744 | Зарегистр. 07-01-2009 | Отправлено: 16:53 04-07-2017 | Исправлено: Sinclair83, 17:02 04-07-2017
crotoff

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sinclair83
в общем скорее всего дело было в devcon - когда скачал devconx64, то с ним заработало

Всего записей: 956 | Зарегистр. 17-04-2007 | Отправлено: 09:07 05-07-2017
Sinclair83

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
crotoff
да, не подумал про x64 (сам никак не перейду). Было бы странно, если не заработало. Ведь в скрипте ничего сверхестественного.

Всего записей: 744 | Зарегистр. 07-01-2009 | Отправлено: 10:54 05-07-2017
Falcon99



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен совет. Есть задача по копированию backup'ов баз MS SQL в нерабочее время. Сейчас выполняется следующим скриптом.  

Код:
@echo off
set path_sourse=c:\temp\111
set path_dest=\\server1\rezerv
set path_month=07
set path_days=03-07
set files_mask=Backup_*.dbk
:: Проверяем наличие целевого каталога
if exist %path_dest% (
:: Целевой каталог существует
echo Целевой каталог существует
) else (
:: Целевой каталог не существует
echo Целевой каталог не существует  
goto end
)
:: Проверяем наличие месячного каталога
if exist %path_dest%\%path_month% (
:: Месячный каталог существует
echo Месячный каталог существует
) else (
:: Месячный каталог не существует
echo Месячный каталог не существует, создаем
mkdir %path_dest%\%path_month%
)
:: Проверяем наличие конечного каталога
if exist %path_dest%\%path_month%\%path_days% (
:: Конечный каталог существует
echo Конечный каталог существует
) else (
:: Конечный каталог не существует
echo Конечный каталог не существует, создаем
mkdir %path_dest%\%path_month%\%path_days%
)
:: Проверяем наличие файлов в каталоге
if exist %path_dest%\%path_month%\%path_days%\%files_mask% (
:: Файлы уже есть, выходим
echo Файлы уже есть
goto end
) else (
:: Файлы отсутствуют, проверяем наличие файлов для копирования
if not exist %path_sourse%\%files_mask% (
:: Файлов для копирования нет, выходим
echo Файлов для копирования нет
goto end
) else (
echo Файлы есть, папка куда копировать есть, поэтому копируем
xcopy %path_sourse%\%files_mask% %path_dest%\%path_month%\%path_days%
)
)
:end
pause

 
Выполняется он раз в неделю по субботам ночью, переменные path_month и path_days корректируются вручную. В Backup_*.dbk вместо "*" идут цифры от 1-го до 5-и. Работает нормально, но т.к. копирование идет по сети, то хотелось бы быть уверенным что скопированные файлы идентичны исходным. Поэтому можно производить копирование с проверкой идентичности скопированных файлов?

Всего записей: 590 | Зарегистр. 12-10-2005 | Отправлено: 16:40 06-07-2017
Lepar



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

Всего записей: 510 | Зарегистр. 01-06-2017 | Отправлено: 19:14 06-07-2017
Falcon99



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Жаль. Тогда буду думать над вариантом считывания hash сумм и их сравнением. Просто не хотелось так делать, т.к. это сильно увеличит время проведения операции, да и сеть будет сильно загружена.

Всего записей: 590 | Зарегистр. 12-10-2005 | Отправлено: 09:18 07-07-2017 | Исправлено: Falcon99, 09:19 07-07-2017
thejustsoul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Falcon99
У copy есть флаг "V"  "Проверка правильности копирования файлов.", хз как оно проверяет и проверяет ли вообще, но вдруг пригодится.

Код:
copy /V

Всего записей: 1782 | Зарегистр. 30-03-2014 | Отправлено: 09:29 07-07-2017
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если файл контрольных сумм будет создаваться непосредственно на сервере, то как это нагрузит сеть?

----------
Мы все умрём. (-:

Всего записей: 3459 | Зарегистр. 23-04-2009 | Отправлено: 10:06 07-07-2017
Falcon99



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

Цитата:
У copy есть флаг "V"  "Проверка правильности копирования файлов.", хз как оно проверяет и проверяет ли вообще, но вдруг пригодится.

 
Не знал, спасибо.
 
Inoz2000

Цитата:
Если файл контрольных сумм будет создаваться непосредственно на сервере, то как это нагрузит сеть?

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

Всего записей: 590 | Зарегистр. 12-10-2005 | Отправлено: 11:05 07-07-2017
Inoz2000



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

----------
Мы все умрём. (-:

Всего записей: 3459 | Зарегистр. 23-04-2009 | Отправлено: 11:18 07-07-2017
Falcon99



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если при копировании произошла ошибка, то контрольная сумма будет отличаться.

Всего записей: 590 | Зарегистр. 12-10-2005 | Отправлено: 12:57 07-07-2017
Pasha_ZZZ



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

Всего записей: 10082 | Зарегистр. 11-03-2002 | Отправлено: 13:05 07-07-2017
Inoz2000



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

----------
Мы все умрём. (-:

Всего записей: 3459 | Зарегистр. 23-04-2009 | Отправлено: 13:05 07-07-2017
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
В теории. На практике многократно сталкивался с ситуацией, когда даже при локальном копировании с диска на диск файл получался битым.
Falcon99
Для пущей достоверности нужно после копирования и перед проверкой перезагрузиться, ибо есть еще кеширование.

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

Всего записей: 3096 | Зарегистр. 18-04-2005 | Отправлено: 14:45 07-07-2017
Falcon99



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

Цитата:
Если при копировании не произошло ошибки, но она произошла при проверке?

 
Хм... об этом я не подумал.
 

Цитата:
При ошибке копирования команда вернет ошибку

 
Понял, спасибо всем, значит оставлю скрипт в покое.

Всего записей: 590 | Зарегистр. 12-10-2005 | Отправлено: 15:22 07-07-2017
Sinclair83

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

Цитата:
Если при копировании не произошло ошибки, но она произошла при проверке?

извините что вмешиваюсь, но может тогда Falcon99 сделать так:
перед копированием на локальной машине создать текстовый файл (список хэшей). И после копирования сделать тоже самое, но уже на удалённой машине (допустим средствами PsExec). Затем сравнить эти два файла (для надёжности можно пару раз ).
 
Добавлено:
только не говорите про вероятность коллизии, что хэш побитого файла может соответствовать оригиналу.

Всего записей: 744 | Зарегистр. 07-01-2009 | Отправлено: 16:04 07-07-2017 | Исправлено: Sinclair83, 16:13 07-07-2017
Falcon99



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

Цитата:
перед копированием на локальной машине создать текстовый файл (список хэшей).

 
Думал и про такой вариант, но сейчас на выходных пришел на ум еще один способ, перед копированием заархивировать, можно даже без сжатия, файлы, а после копирования произвести проверку архива. Если после копирования файл будет не идентичен, то архив будет "битым" и тестирование будет пройдено с ошибкой. Поэтому посмотрю что будет оптимально из этих вариантов. Потому как и просто копирование занимает немного меньше 2-х часов, а сколько займет при реализации таких путей, я даже не представляю, надо тестировать.

Всего записей: 590 | Зарегистр. 12-10-2005 | Отправлено: 09:25 10-07-2017
Sinclair83

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Falcon99
привет, хочу немного помочь тебе.
Здесь небольшая утилитка, которая считает контрольные суммы (MD5) для всех файлов указанного каталога (рекурсивно). Ограничения: только для "бАтаников"
Также в пути к целевому каталогу не должно присутствовать пробелов. Но я смотрю у тебя и так их нет - "c:\temp\111". Положи утилиту рядом со скриптом и перед строчкой

Код:
xcopy %path_sourse%\%files_mask% %path_dest%\%path_month%\%path_days%

добавь такую:

Код:
start "" /WAIT md5-calc %path_sourse%

в результате, рядом с утилитой создастся текстовый файл с хэшами.
 

Цитата:
Потому как и просто копирование занимает немного меньше 2-х часов

Это сколько же там файлов ?  
Если их "тыщи", то действительно наверное лучше упаковать, так как скопировать один большой файл быстрее нежели множество мелких.

Всего записей: 744 | Зарегистр. 07-01-2009 | Отправлено: 15:03 10-07-2017
Falcon99



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Файлов всего пять, но каждый более 40 Гб. И т.к. это бэкап баз MS Sql, то они еще и растут потихоньку.  
 
А про утилиты создания hash, я смотрел rhash, md5, fsum и fciv. Пока больше заинтересовала rhash. Про md5-calc не знал, но гляну. Спасибо. А полученные файлы собираюсь сравнивать с помощью команды fc.

Всего записей: 590 | Зарегистр. 12-10-2005 | Отправлено: 15:14 10-07-2017
   

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