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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    01MDM



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

    cd.>1.txt

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:31 15-02-2009
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не подскажите как мне через bat-файл соединить два html-файла?
    и еще получится ли это с pdf и doc файлами?

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 13:02 15-02-2009
    Maza_Faka



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

    Цитата:
    как мне через bat-файл соединить два html-файла?

    1.

    Код:
     
    Type part1.html>Result.html
    Type part2.html>>Result.html
     

     
    2.

    Код:
     
    copy part1.html + part2.html result.html
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:37 15-02-2009
    Smitis



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

    Цитата:
    Type part1.html>Result.html  
    Type part2.html>>Result.html  


    Цитата:
    copy part1.html + part2.html result.html  

    Только без сохранения нормальной структуры html
     
    lorents

    Цитата:
    не подскажите как мне через bat-файл соединить два html-файла?  
    и еще получится ли это с pdf и doc файлами?

    Без использования стороних утилит или, как минимум, wsh, - нельзя.

    ----------
    Разум когда-нибудь победит

    Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 15:46 15-02-2009
    ponand

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

    Цитата:
    setlocal enabledelayedexpansion
    for %%a in (*.*) do (
    set "var=%%a"
    echo !var:~0,2!
    )
     

    А можно !var:~0,2! Присвоить переменной ?

    Всего записей: 56 | Зарегистр. 14-07-2008 | Отправлено: 15:53 15-02-2009
    Elroir



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

    Код:
    set "var2=!var:~0,2!"


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:19 15-02-2009 | Исправлено: Elroir, 16:20 15-02-2009
    ponand

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

    Цитата:
    set "var2=!var:~0,2!"
     

    так я пробовал но почемуто не работает ?
    Выдает var2=~0,2

    Всего записей: 56 | Зарегистр. 14-07-2008 | Отправлено: 16:36 15-02-2009
    lorents



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

    Код:
    copy /b part1.html + part2.html result.html  

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 16:42 15-02-2009
    Elroir



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

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

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



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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 16:48 15-02-2009 | Исправлено: lorents, 16:54 15-02-2009
    Elroir



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

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:51 15-02-2009 | Исправлено: Elroir, 16:52 15-02-2009
    ponand

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

    Код:
    echo on
    setlocal enabledelayedexpansion
    set "puti=E:\sert\test\Scrins\progi"
    for /F "usebackq tokens=1* delims=_" %%a in (`dir %puti% /a:-d-h /o:n /s /b`) do (
    set "var=%%b"
    set "var2=!test:~0,2!"
    set var2
    pause
    )
     
    запускаю в SciTE 1.76.57Ru

    Всего записей: 56 | Зарегистр. 14-07-2008 | Отправлено: 16:59 15-02-2009 | Исправлено: ponand, 17:06 15-02-2009
    Elroir



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

    Цитата:
    set "var2=!test:~0,2!"

    Откуда взялась переменная test?

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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В место var использовал test и забыл исправить
    но все на некоторые файлы получаю ~0,2
    Как for обработает файлы в имени которого нет символа "_"?

    Всего записей: 56 | Зарегистр. 14-07-2008 | Отправлено: 17:23 15-02-2009
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ponand
    В %%a будет все имя файла, а в %%b ничего. Соответственно, в var ничего не будет и переменной var2 будет присвоено значение "~0,2".
    Если тебе нужны только файлы с "_", тогда можно чуть изменить команду dir:
    dir %puti%\*_*.* /a:-d-h /o:n /s /b
     

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

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



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

    Цитата:
    выяснился 1 недостаток. окно "my program has crashed" "принадлежит" окну "my program" (то есть, второго окна в панели задач нет).

    Дочернее окно... Тогда попробуй так:

    Код:
     
    @Echo Off
     
    :WindowCheck
    CMDOW "my program was crashed" 2>Nul | Find /i "Handle">Nul 2>&1 && Call :MyProc
    Ping -n 3600 127.0.0.1>Nul
    GoTo :WindowCheck
     
    :MyProc
    Echo MyProc
     

    Утилиту CMDOW можно скачать по ссылке в "шапке"

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:26 16-02-2009
    Ilyansk

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
    однако при "tokens=*" может иметь место неявное присвоение, если переменные перечислены по алфавиту... может это только для вызовов call справедливо?  

    Код:
    for /F "tokens=*" %%a in ('dir') call %%a %%b %%c

    здесь %%b получит второй токен, а %%c - третий, буде таковые непустыми окажуццо

    Всего записей: 70 | Зарегистр. 27-07-2006 | Отправлено: 09:17 16-02-2009 | Исправлено: Ilyansk, 09:20 16-02-2009
    whoyou

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Большое Вам спасибо, первый вариант подошел.

    Всего записей: 23 | Зарегистр. 30-01-2009 | Отправлено: 11:14 16-02-2009
    chel78



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

    Цитата:
    chel78
     
    Цитата:
    не получается (( все равно пишет что -  процесс не может получить доступ к файлу, так как файл занят другой программой
     
    Проверь каким приложением занят этот файл.
     

     
     
     Да ничем он не занят, да и не понятно, какой именно файл, и чем занят.
     
     Heeeeeelp!!!

    Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 12:01 16-02-2009
    Elroir



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

    Цитата:
    однако при "tokens=*" может иметь место неявное присвоение, если переменные перечислены по алфавиту...  

    Если честно - я не совсем понял вопрос. Что такое "неявное присвоение"?
     
    Команда for определяет, количество токенов по параметру tokens, согласно четким правилам:
    tokens=* - будет определен один токен, в который войдет вся строка.
    tokens=1 - будет определен один токен (первый), выделенный в зависимости от определения параметра delims (по умолчанию разделителями являются пробел и символ табуляции).
    tokens=1,3 - будут определены два токена, первый и третий, снова - в зависимости от delims.
    tokens=2-4 - будут определены три токена, второй, третий и четвертый.
    tokens=2* - будут определены два токена, второй и вся оставшаяся часть строки.
    Каждый раз, первый определенный токен будет в переменной, которая определена в строке for-а, следующий токен в следующей (по алфавиту) переменной и т. д.  
    Если в строке нет того количества токенов, которого мы ожидаем - переменные будут пустыми (неопределенными).
     

    Цитата:
    здесь %%b получит второй токен, а %%c - третий, буде таковые непустыми окажуццо

    Как следует из изложенного выше, %%b и %%c в твоем примере будут пустыми. Команда call здесь никакой роли не играет.


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:35 16-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru