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

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

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

articlebot (21-06-2016 11:40): Следующая часть - Командная строка, батники, сценарии (bat, cmd)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452

   

Widok



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 12
 
Полезные ссылки
· Из 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. Справочник администратора
 
· Скрываем консольные окна
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.zip - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
 
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 16:29 03-03-2010 | Исправлено: regist123, 13:32 02-11-2015
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
artem9p
CDBF то консольный или гуевый?
Для батников гуевый не интересен.
Консольный cdbf на сколько я помню умет делать запросы к дбфам и выводить результаты.
Сделай соответсвующий запрос к базе, а потом в батнике анализируй вывод.
Если закинешь сюда пример вывода сдбф, помогу распарсить вывод.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:34 26-10-2011
eschotottip

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
добрый день для меня работа в CMD совершенно не знакомая, пытаюсь разобраться и не получается. подскажите как осуществить на диске С во всем каталоге и подкаталогах поиск файлов определенного расширения, например .pdf и копирования (именно копирования, не переноса) их в одну папку.
 
заранее спасибо

Всего записей: 3 | Зарегистр. 27-10-2011 | Отправлено: 06:54 27-10-2011
wolf0425



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

Код:
for /f "delims=" %%a in (' dir /b /a-d /s c:\*.pdf ') do copy "%%~a" "d:\dest\"

Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 08:12 27-10-2011
artem9p

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

Цитата:
пример вывода сдбф

неполучилось...  
она то консольная но получ все в ней нада вручную делать (не командами а через меню)
 не нашол  запросы как делать там... ток фильтры и тд но все в ручную ток  
она может конвертить ДБФ в ТХТ но я нашол ток как в ручную это сделать...
в нете ничего по сабжу не нашол...

Всего записей: 49 | Зарегистр. 23-03-2010 | Отправлено: 09:27 27-10-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
artem9p
Посмотри в сторону cdbflite - это как раз то что тебе нужно - чисто консольная утилита.
А cdbf console - немного не то - она с текстовым пользовательским интерфесом.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 09:44 27-10-2011
artem9p

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cdbflite то што нужно ща с синтаксисом розберусь и будет мне щастья
он не ток посотреть можеит он и изменить может.... нужную ячейку
и тут открываэтсо много возможностей.....
с синтаксисом розобралсо..
вот  
CDBFlite d:\pele.dbf  /select:DREPAYMS
вывод будет такой
20110908
20110806
20111005
20111004
20111003
20111002
дальше нада проверить если дата не сходитсо с тикущей больше чем на 30 дней то сделаьт ченить мли все кул начать порверку следуэщего файла в папке идеально если дата не проходит идет перемещения в другой каталог
эт 1 задача ....
есть другая но она как на меня трудней опишу вдруг будут предложения.
потом вывод следующий
команда :CDBFlite d:\pele.dbf /select:POK,POK_0
Вывод: POK            POK_0
           9080|           8943
           8950|           8943
           6351|           6217
           1095|           1243
           5233|           5110
           3700|           3593
           1630|           1563
           6330|           6111
           8990|           8790
          15330|          14605
          15130|          14605
Нужно проверить если POK Больше POK_0 то все норм если меньше то нада их поменять местами ...
и тут проблема в фале нету номерацыи строк... общий вид команды такой
CDBFlite d:\pele.dbf /filter:id=1000 /field:POK ="",POK_0=30 /update
 
ПС: чет мне кажетсо оч сложно все будет... и эсть попорще варианты но было бы неплохо...

Всего записей: 49 | Зарегистр. 23-03-2010 | Отправлено: 10:23 27-10-2011 | Исправлено: artem9p, 11:20 27-10-2011
res2001



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

Цитата:
тут открываэтсо много возможностей

Точно, фактически cdbflite умеет все что и гуевый, только все это в ком.строке.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:42 27-10-2011
eschotottip

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q][/q]
 
@echo off
chcp 1251
md C:\PDF
for for/f "delims=" %%a in (' dir /b /a /-d /s c:\*.pdf ') do copy "%%~a" "c:\PDF\"
set SrcPath=C:\PDF
set DestPath=C:\PDF
set ArhName=ARHIV
"C:\Program Files\WinRAR\WinRAR.exe" a -m0 -s -y -ep3 -r -p12345 "%DestPath%\%ArhName%_.rar" "%SrcPath%\*.*"
echo open ftp.XXXXXX.ru >> ftp.txt
echo quote user ZZZZZZ >> ftp.txt
echo quote pass RRRRRR >> ftp.txt
echo bin >> ftp.txt
echo mput C:\PDF\ARHIV.rar >> ftp.txt
echo mpeg ftp.XXXXXXX.ru\NEWARH.rar C:\PDF
echo close >> ftp.txt
echo quit >> ftp.txt
 
ftp.exe -i -n -s:ftp.txt
del ftp.txt
 
del -y
 
должны выполняться следующие задачи:
1. на диске С создается папка PDF
2. в папку PDF копируются все файлы на диске С с расширением .pdf
3. архивируем все скопированные файлы в ARHIV.rar, архив размещается в той же папке PDF
4. подключаемся к FTP серверу XXXXXXXXX с логином ZZZZZZZZ и паролем RRRRRRRRR
5. отправляем на FTP сервер (в папку ARHFTP)
6. c FTP сервера из папки NEWFTP копируем NEWARH.rar на диск С в папку PDF
7. проверяем загрузку на и из FTP архивов.
8. удаляем из папки FTP, диск С все скопироваанные ранее файлы с расширением PDF, а также ARHIV.rar
 
Но не  работает 2,5,6 задачи.
не могу написать скрипт для 7 и 8 задачи.
 
помогите закончить пожалуйста
а то мозг взрывается уже)

Всего записей: 3 | Зарегистр. 27-10-2011 | Отправлено: 10:53 27-10-2011
res2001



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

Код:
for /f "delims=" %%a in ('dir /b /a-d /s c:\*.pdf ^| findstr /v /i "c:\pdf\" ') do copy /y "%%~a" "c:\PDF\"

Добавил в вариант предложеный wolf0425 исключение файлов уже находящихся в c:\pdf, что исключить копирование самого в себя.
 
По работе с ФТП поищи тут, было много примеров скриптов для ftp.exe.
Главная твоя ошибка это то что многие команды ftp не принимают параметры, а просят вводить значение. В скрипте это будет выглядеть так:
open ftp.XXXXXX.ru
ZZZZZZ
RRRRRR
 
Мой ФТП сервер на команду open сразу запрашивает имя пользователя и пароль, не знаю как другие, могут быть различия, я думаю.
Ну остально, по аналогии. И вообще проще запустить ftp.exe проделать все действия руками, а потом уже перенести их в скрипт.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 11:12 27-10-2011
artem9p

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eschotottip
непашет потомушто непрописаны переходы в каталоги сотри ниже
вот мой ftp.txt пашет  на ура
 
login                -логин на ФТП
passs               - ПАРОЛЬ к ФТП
cd "filials/17/"  -  папка на удаленном фтп
lcd D:\            -  Дискна ПК
lcd \Bank        - папка на ПК откуда копировать
mput *.dbf      -  забрать все ДБФ фалы
bye                -  закрыть сесию
 
 
да вот файл для скачки с фтп и удаления
 
anonymous
1  
cd "filials/17/"
lcd c:\
lcd \Ban\Import
mget *.dbf
mget *.DBF
lcd g:\
lcd \banktemp
mget *.dbf
mget *.DBF
mdelete *.dbf
mdelete *.DBF
bye
 
 
да  подкл созд у мну так
 
Set FTPip=10.10.10.10
Set Ftp_Client=G:\2.txt
ftp -i -s:%Ftp_Client% %FTPip%  
 

Всего записей: 49 | Зарегистр. 23-03-2010 | Отправлено: 11:23 27-10-2011 | Исправлено: artem9p, 11:30 27-10-2011
eschotottip

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
протестирую спасибо за подсказку. сам ФТП - на ура коннекится и даже файл принимает, только почему то пустой... послал тестовый ТХТ. 145 кб, пришел с 0кб
 
может кто-нибудь подсказать или дать ссылку. есть программа EASY BATCH BUILDER.  перекачал кучу вариантов - везде одно и тоже - требует регистрацию.
 
нет у кого-нить с ключем русской и рабочей? ))
 

Всего записей: 3 | Зарегистр. 27-10-2011 | Отправлено: 13:05 27-10-2011
artem9p

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

Цитата:
послал тестовый ТХТ. 145 кб, пришел с 0кб

на фтп права точно есть??

Всего записей: 49 | Зарегистр. 23-03-2010 | Отправлено: 14:42 27-10-2011
Demixenizator

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А вот имеется такой вопросик...
Можно ли при помощи батника изменить сам вид cmd по умолчанию? А именно:
1. Шрифт по умолчанию Lucida Console
2. Размер шрифта - 14.
3. Положение окна 0,0
4. Страница chcp 1251>nul
5. Ширина\Высота 80,40
6. Размер курсора - Большой
7. И что бы были включенны "Быстрая вставка" и "Выделение мышью".
 
Что бы запустить такой батник на компе и не лазить в настройках мышкой, клацая все эти удобства!
 
Windows 7.

Всего записей: 1 | Зарегистр. 27-10-2011 | Отправлено: 17:48 27-10-2011
Lapochka ili Chai



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется полезный код
 

Код:
PUSHD %1  
SetLocal EnableDelayedExpansion
For %%0 In (%2) Do (
    Set DateTime=%%~t0
    Set DateTime2=!DateTime:.=-!
    Ren "%%0" "!DateTime2::=-! %%0"
    )
POPD  

 
переименовывающий файлы, добавля к началу файла время (создания) этого файла в формате 2011-10-27 12-30.
 
ПРОБЛЕМА: если имя файла и так длинное, то возникает некое переполнение, т.е. ошибка.
 
Можно ли в пакетнике так переименовывать файл, чтобы и обрезать длину имени, и избежать конфликта с другими файлами?
 
Напомню, что всё это запускается в пакетнике в папке с большим количеством файлов, т.е. конфликты возможны. Конфликт будет тогда, когда у двух (или более) файлов имена очень длинные, а различие в именах файлов находится в конце имени файла.
 
Можно ли в пакетнике как-то, например, так сделать: обрезать (например, по 100-й позиции имени), но в конце добавить некий счётчик для обеспечения уникальности имени?

Всего записей: 847 | Зарегистр. 27-11-2003 | Отправлено: 21:10 27-10-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lapochka ili Chai
а получить короткое имя не судьба? гляди в сторону %~si, а на счет уникального идентификатора: как на счет случайного числа?

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 23:09 27-10-2011
Lapochka ili Chai



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

Цитата:
 как насчет случайного числа?

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

Цитата:
гляди в сторону %~si

 
куда смотреть?
Что-то рою-рою по ссылкам в шапке, по этой теме, по её предшественникам, не вижу, что это такое: %%~si
И даже Гугл не помогает.
 
ага, вот что нашёл:  

Цитата:
%~sI    Expands path to contain short names only.

но, правда, это не %~si, а %~sI.
 
а здесь, похоже, s1 и sI просто перепутали, спутав 1 и I.
 
То есть короткое имя вроде можно получить. И его можно использовать как уникальный короткий идентификатор, т.е. поместить после обрезанного по 100-й позиции имени. Но как получить это обрезанное по 100-й позиции имя и как потом сделать конкатенацию имён?
 

Всего записей: 847 | Зарегистр. 27-11-2003 | Отправлено: 23:47 27-10-2011 | Исправлено: Lapochka ili Chai, 00:29 28-10-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
глянь for /?
Код:
for /d %%i in (%var%) do set var=%%~si
получишь сокращенное дос-имя переменной. хотя, если прикинуть, то это не так уж и действенно будет.
 
Добавлено:
какая нафиг разница %~sI или %~si - в этом плане батники не чуствительны к регистру.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 00:26 28-10-2011
Lapochka ili Chai



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

Цитата:
какая нафиг разница %~sI или %~si - в этом плане батники не чуствительны к регистру.

ага, точно, под досом же они равнозначны... пардону просим..

Всего записей: 847 | Зарегистр. 27-11-2003 | Отправлено: 00:31 28-10-2011 | Исправлено: Lapochka ili Chai, 00:32 28-10-2011
wolf0425



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

Цитата:
 какая нафиг разница %~sI или %~si - в этом плане батники не чуствительны к регистру.

вообще-то как раз в этом месте  - к регистру чувствительны, %i и %I  -это две совершенно разные переменные цикла
Lapochka ili Chai имена переменных цикла i или I там для примера вписаны, подходят все буквы и цифры
 

Код:
а здесь, похоже, s1 и sI просто перепутали, спутав 1 и I.  
там ничего не перепутано  - там статья про параметры  командной строки, а не про переменные цикла. Хотя формат модификаторов (%~si) там такой же.
и, кстати, вот модификаторы - к регистру не чуствительны, т.е. что %~S1 что %~s1 - разницы нет.

Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 08:38 28-10-2011 | Исправлено: wolf0425, 12:50 28-10-2011
res2001



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

Цитата:
в этом плане батники не чуствительны к регистру

Вполне себе чувствиетльные.  
Просто i, I, 1 и т.д. это все переменные. В разных примерах, ессно, они могут быть разные, так же могут быть a,A,b,B и т.д.
 
Lapochka ili Chai
Все же лучше, по моему, брать первые 100 символов и добавлять счетчик.
Как-то так:

Код:
@echo off
SetLocal EnableDelayedExpansion
pushd %1
For %%a In (%2) Do (
    Set "DateTime=%%~ta"
    Set "DateTime2=!DateTime:.=-!"
    set "newname=%%~na"
    set "newname=!DateTime2::=-! !newname:~0,100!"
    set "strc="
    call:ifexist "!newname!%%~xa"
echo    Ren "%%~a" "!newname!!strc!%%~xa"
)
popd
goto:eof
 
:ifexist
if not defined strc set "count=0"
echo %~n1!strc!%~x1
if exist "%~n1!strc!%~x1" (
    set /a "count+=1"
    set "strc=000!count!"
    set "strc=!strc:~-4!"
    call:ifexist %1 !count!
)
exit /b

Проверь работу и убери echo из команды переименования файлов.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 11:29 28-10-2011 | Исправлено: res2001, 10:39 31-10-2011
   

Страницы: 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 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
articlebot (21-06-2016 11:40): Следующая часть - Командная строка, батники, сценарии (bat, cmd)


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru