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

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

Модерирует : KLASS, IFkO

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 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

   

Nagual



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    ab48



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Очень нужна помощь! Я новичок в написании bat-файлов, но кое-что все таки написала:
     
    1 код (он же запускной) - cop.bat
     
    call copy_f.bat
    call copy_ftp.bat
    call del_f.bat
     
    2 код - copy_f.bat
     
    @echo off
    setlocal enabledelayedexpansion
    set "folder=d:\ARC\"
    set "copy_to=d:\ARC_FTP\"
    set "cdate=%date:,=%"
    for %%a in (%folder%*.rar) do (
    set "file_date=%%~ta"
    set "file_dm=!file_date:~0,10!"
    set "file_dm=!file_dm:,=!"
    if !file_dm!==!cdate! copy %%a %copy_to%
    )
     
    3 код - copy_ftp.bat
     
    ftp -s:com.txt  
     
    4 код - com.txt
     
    open ftp.ab48.org
    login
    password
    cd ARH/AB
    prompt off
    mput d:\arc_ftp\*.rar
    bye
     
    5 код - del_f.bat
     
    prompt off
    del "d:\ARC_FTP\*.rar"
     
    В папке ARC лежат архивы баз, архивы делаются каждый день, если не вдаваться в подробности батников, то я копирую каждый день новый архив ( с сегодняшней датой) на ftp-сервер. Все копируется, но что-то происходит при копировании и в итоге на ftp-сервер ложится какой-то поломанный архив, я так подозреваю, что это как-то связано с перекодировкой? Помогите, пожалуйста, разобраться, весь форум излазила, ничего не нашла.

    Всего записей: 11 | Зарегистр. 13-03-2008 | Отправлено: 15:51 18-04-2008
    igor_andreev

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

    Цитата:
    Все копируется, но что-то происходит при копировании и в итоге на ftp-сервер ложится какой-то поломанный архив, я так подозреваю, что это как-то связано с перекодировкой?

    А если все действия проделать не с rar, а с zip? Тоже архивы битыми закачиваются? Если zip закачивается нормально - то это по идее ненастроенный apache, он по умолчанию рассматривает незнакомые расширения как text\plain. Надо "рыкнуть" на своего хостера или самому в файл .htacces вписать что-то наподобие "AddType application/x-rar-compressed .rar". В гугле набери ".htacces + AddType application/x-rar-compressed" (без кавычек) - найдешь ссылки с более подробным описанием проблемы.
     
     
    Добавлено:
    Тю блин, я думал, ты на сайт закачиваешь rar и скачать по http пытаешься В com.txt после login и password добавь команду binary, все будет нормально. Ftp.exe по умолчанию тоже все рассматривает, как text\plain

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 16:16 18-04-2008 | Исправлено: igor_andreev, 16:22 18-04-2008
    ab48



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

    Цитата:
    [/q]
    [q]Тю блин, я думал, ты на сайт закачиваешь rar и скачать по http пытаешься  В com.txt после login и password добавь команду binary, все будет нормально. Ftp.exe по умолчанию тоже все рассматривает, как text\plain

     
    Спасибо огромное, все заработало .

    Всего записей: 11 | Зарегистр. 13-03-2008 | Отправлено: 16:50 18-04-2008
    SymA



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

    Цитата:
    Как залить по фтп файл на some.narod.ru ?


    Цитата:
    curl -T file.ext ftp://login:pass@ftp.narod.ru/dir/subdir/

     
    Спасибо. НО хотелось бы без сторонних утилит. . .
     
    Если делаю так:
    БАТ

    Код:
    ftp -s:com.txt

    com.txt:

    Код:
    open some.narod.ru
    some
    pass
    put d:\arc_ftp\*.rar
    bye

     
    то пишет:
    Цитата:
    FTP: connect :Неизвестный код ошибки
    ftp> some
    Недопустимая команда.
    ftp>pass
    Недопустимая команда.
     


    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 17:02 18-04-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SymA
    а если open ftp.narod.ru?

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 17:05 18-04-2008
    bmax

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

    Цитата:
    Цитата: goto :eof  
     
    э... тебе надо скопировать один файл или много?

     
     
    один (который, был создан последним) и скопировать его в паку и присвоить ему имя на единичку больше, чем у предыдущего. Для этого в самом начале подсчитываем кол-во файлов в этой папке.
     
    скрипт работает (может кому пригодится)
     
    FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\2\*.*"') do set /a count+=1  
    IF EXIST D:\2\*.* set "count=0%count%" ELSE  
    set "count=00%count%"  
    set "count=%count:~-2%"  
    for /f "tokens=*" %%c in ('dir "D:\1\*.*" /o:-d /t:c /b /a:-d') do (  
    more +6 "D:\1\%%c" | findstr "<EA323" 1>nul || (  
    copy /y /D "D:\1\%%c" "D:\2\11%date:~0,2%%count%.dvc"  
    goto :eof  
    )  
    )

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 17:20 18-04-2008
    SymA



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

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 17:29 18-04-2008
    ASTERIKS88



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Огромная нужда в очистке реестра батником! Нужно удалить все ветки и ключи содержащие слово "SolidWorks" и в конце этого процесса выдать что-то типа того что реестр очищен или операция выполнена
     
    ПОМОГИТЕ!

    Всего записей: 14 | Зарегистр. 17-09-2007 | Отправлено: 21:43 18-04-2008
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:54 18-04-2008
    ASTERIKS88



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

    Всего записей: 14 | Зарегистр. 17-09-2007 | Отправлено: 23:01 18-04-2008
    Dmitriy05



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Задача: скопировать папку D:\The Bat!\Mail в C:\Recover\ - то есть в итоге будем иметь  
    C:\Recover\Mail

    Всего записей: 2514 | Зарегистр. 03-08-2005 | Отправлено: 15:50 19-04-2008
    Elroir



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

    Код:
     
    @echo off
    md "C:\Recover\Mail" 2>nul
    xcopy "D:\The Bat!\Mail" "C:\Recover\Mail" /s /e /q
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:16 19-04-2008
    Dmitriy05



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Спасибо! Только один вопрос: Зачем мы пишем /s и /e - ведь таким образом мы включаеим и одновременно исключаем копирование пустых подпапок?  

    Всего записей: 2514 | Зарегистр. 03-08-2005 | Отправлено: 16:40 19-04-2008
    Elroir



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

    Цитата:
    Зачем мы пишем /s и /e

    На самом деле - незачем. Можно просто использовать /е - будет то же самое

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:53 19-04-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    задача: вывести строку произвольной длины с паузами, используя утилиту sleep
    пример
    set str=qwerty asdfg zxcvb
    нужно, чтобы выводилось
    q
    qw
    qwe
    и тд
    кто сталкивался, жду кирпича

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 22:34 19-04-2008
    Elroir



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    set "str=qwerty asdfg zxcvb"
    set "count=1"
    set "time=1"
    :next
    if "!str:~%count%!"=="" goto :EOF
    echo !str:~0,%count%!
    sleep %time%
    set /a "count+=1"
    goto next
     
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:08 19-04-2008
    yorcie

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем!
    Помогите, пожалуйста, с решением такой элементарной задачи - нужно скопировать каталог. Путь к нему может быть длинным и указывается как один из параметров, целевая папка не указывается, используется текущая. Так вот, при использовании COPY & XCOPY копируется только СОДЕРЖИМОЕ каталога, но не САМ ОН и не ЕГО НАЗВАНИЕ!!!
    Полазил по форуму - нашёл рекомендацию использовать конструкцию такого вида:
    xcopy C:\1 C:\2\ /s /e /r /h
     
    Не помогает...
    Подскажите, люди добрые!

    Всего записей: 5 | Зарегистр. 04-08-2007 | Отправлено: 12:24 20-04-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yorcie
    xcopy все копирует как надо, а вот путь лучше заключить в кавычки.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:41 20-04-2008
    king_stiven

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

    Код:
    set "new_folder=1"
    xcopy "C:\1" "C:\2\%new_folder%" /e /r /h /i

     
    либо просто

    Код:
    xcopy "C:\1" "C:\2\1" /e /r /h /i

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 13:34 20-04-2008 | Исправлено: king_stiven, 13:34 20-04-2008
    yorcie

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо за помощь! Однако моя задача в том, чтобы обработать параметр командной строки %1, содержащий полное имя каталога, например, c:\windows\system32, а скопировать только сам каталог system32 и его содержимое! Используя предложенные Вами варианты, добился того же, что и раньше - копируется только СОДЕРЖИМОЕ каталога в текущий каталог. При этом я в вызове xcopy в качестве конечной папки ничего не указываю, хотя можно было бы указать %~p0, но это ничего не меняет. То есть мне нужно как-то извлечь имя последней папки из полного пути и создать такую же в текущем каталоге, затем перейти в неё и уже потом скопировать содержимое каталога!

    Всего записей: 5 | Зарегистр. 04-08-2007 | Отправлено: 15:09 20-04-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru