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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот код для архиватора 7z
    Внимание: для поддержки распаковки rar архивов рядом с файлом 7za или 7z должен лежать файл 7z.dll
     
    @echo off
    set qip_build=8030
    set qip_host=http://download.qip.ru/
    wget %qip_host%qip%qip_build%.rar
    taskkill /f /im qip.exe
    7z x -y "qip%qip_build%.rar" qip.exe
    ::7z x -y "qip%qip_build%.rar" LI rem так обновляем папку с языками
    ::7z x -y "qip%qip_build%.rar" LI/langs.cfg rem так обновляем файл внутри папки
    if exist "qip%qip_build%.rar" del /f/q "qip%qip_build%.rar"
    start "" qip

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 03:44 16-07-2007
    Maza Faka



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

    Цитата:
    получаю "Файл не найден".

     
    Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:58 16-07-2007
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, подскажите способ запуска файла лежащего в  
    \\server-2\c$\WORK\tools
    Консоль говорит, что не поддерживает пути UNC

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 16:51 16-07-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    cluster
    А такой способ

    Код:
     
    Net use Z:  \\server-2\c$
    Z:
    CD Z:\WORK\tools
    proga
    net use z: /delete

     
    или
     

    Код:
    \\server-2\c$\WORK\tools\proga.exe

     
     

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:58 16-07-2007
    cluster

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

    Цитата:
    \\server-2\c$\WORK\tools\proga.exe  

    так вот так вот и ругается

    Цитата:
    Net use Z:  \\server-2\c$  
    Z:  
    CD Z:\WORK\tools  
    proga  
    net use z: /delete  

    так и думал, но спасибо.

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 17:54 16-07-2007
    king_stiven

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

    Код:
    setlocal enabledelayedexpansion
    for %%c in ("текущая папка") do (
        echo %%~pc>1.txt
        for %%i in ("1.txt") do (
            for /f "usebackq tokens=*" %%d in (`dir "*.mp3" /s /b /a:-d`) do (
                set old_way=%%~dpd
                call :in "%%d" "%новый путь%\!old_way:~%%~zi!"
     

    Здесь я из текущего каталога с подкаталогами беру файлы (%%d) и  после обработки сторонней программой они должны поместиться на новое место(%новый путь%), причём в копию каталога с подкаталогами (!old_way:~%%~zi!")
    Но если в имени папки или файла есть знаки !  %  и т.д., "!old_way:~%%~zi!" имеет неправильный выход. Можно ли что-то сделать?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:05 16-07-2007 | Исправлено: king_stiven, 18:09 16-07-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    cluster
    Оригинальная прога
    У меня все запускаются таким образом
    \\server-2\c$\WORK\tools\proga.exe
     
    Может она имеет какие-то подключаемые библиотеки?

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 18:05 16-07-2007
    cluster

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

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 18:13 16-07-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Я что-то никак не могу понять, что должно получаться из "!old_way:~%%~zi!"
    Приведи пример, пожалуйста.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:17 16-07-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    новый путь-                            D:\
    текущий каталог(%%c)-           C:\старый путь\нужная папка\
    В 1.txt вставляем(%%~pc)-         \старый путь\
     
    Например, для файла (%%d )    C:\старый путь\нужная папка\подпапка\10.mp3
    Убираем первые несколько знаков: (~%%~zi), получаем "!old_way:~%%~zi!"-       нужная папка\подпапка\
    соответственно "%новый путь%\!old_way:~%%~zi!"-       D:\нужная папка\подпапка\  

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:41 16-07-2007 | Исправлено: king_stiven, 18:42 16-07-2007
    Elroir



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

    Код:
     
    for %%c in ("текущая папка") do (  
        echo %%~pc>1.txt  
        for %%i in ("1.txt") do (  
            for /f "usebackq tokens=*" %%d in (`dir "*.mp3" /s /b /a:-d`) do (  
                call :in "%%d" "%новый путь%" "%%~dpd" %%~zi
    ...
    ...
    :in  
    set old_way=%~3
    set old_way=%old_way:!=^^^^!%
    setlocal enabledelayedexpansion
    echo %~2\!old_way:~%4!

    ...        
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:28 16-07-2007 | Исправлено: Elroir, 21:28 16-07-2007
    king_stiven

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

    Цитата:
    set old_way=%old_way:!=^^^^!%

    а
    set old_way=%old_way:!=^!%

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 00:04 17-07-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Вообще-то с одной галочкой у меня не сработало.
    Если у тебя работает - хорошо

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:55 17-07-2007
    mitrichbel

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

    Цитата:
    не забывайте удалять пробелы в конце каждой строки
    не помогло - тот же самый результат.

    Всего записей: 1372 | Зарегистр. 30-04-2003 | Отправлено: 00:59 17-07-2007
    Elroir



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

    Цитата:
    получаю "Файл не найден"

    Такое сообщение выводит команда dir, когда в проверяемой директории нет ни одного файла, который бы подходил к заданной маске.  


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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    SBS2.com - да, именно, что религия. Эта программа заменяет файл пустым, если указывать вход. и исход. файл один и тот же.
    Встроенными ср-вами не очень хорошо, т.к. очень долго...
    Но все равно спасибо =)
    Нашел полезную програм. REPTXT32 довольно удобно и без глюков=)

    Всего записей: 11 | Зарегистр. 14-06-2007 | Отправлено: 09:27 17-07-2007
    KapralBel



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

    Код:
    @Echo Off
    For %%a in (*.rar) Do Call :_UR "%%a" "%%~na"
    GoTo :EOF
     
    :_UR
    Set ext1=%~x2
    Set nam1=%~n2
    if /i "%ext1%" == ".part001" GoTo :_UR1
    if /i "%ext1%" == ".part01" GoTo :_UR1
    if /i "%ext1%" == ".part1" GoTo :_UR1
    if /i "%ext1%" == "" GoTo :_UR1
    GoTo :EOF
    :_UR1
    RAR x %1 %Nam1%\
    GoTo :EOF  

     
    При записи в батничек убери все концевые пробелы

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 09:36 17-07-2007
    Maza Faka



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

    Цитата:
    Такое сообщение выводит команда dir, когда в проверяемой директории нет ни одного файла, который бы подходил к заданной маске

     
    Дык откуда мне знать, что он пытается работать с каталогом в котором нет ни одного текстового файла?
        Я скопировал код в буфер обмена и не удалил концевые пробелы, батник выдал ошибку "Файл не найден", хотя файлы в каталоге были...
     
    Добавлено:
    mitrichbel
    У меня работает на 100%, в качестве рабочего каталога в батнике используется "c:\test" замени на нужный тебе.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:14 17-07-2007 | Исправлено: Maza Faka, 10:18 17-07-2007
    mitrichbel

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

    Цитата:
    пытается работать с каталогом в котором нет ни одного текстового файла?
    ну я не настолько тупой всё-таки)
     
    сейчас на рабочей машине - работало долго, судя по окну консоли.  
    Только сообщения на экране нечитаемые после того, как раскомментировал вторую строчку.  
    В папке test создано 125 текстовых файлов без расширений, каждый состоит из одной строчки, взятой из исходных файлов. Названия файлов тоже не подчиняются какому-либо очевидному правилу, состоят из отдельных слов, взятых из обрабатываемых файлов, или пятизначных чисел.
    А на экране окно Windows - Заголовок "1700#1", текст "Windows не удалось найти 1700#1. Проверьте, что имя было введено правильно" и так далее. После нажатия OK батник продолжает работу. Прошло минут 15 - не дождался, Ctrl+C. Количество новых текстовых файлов из одной строки достигло 250 (исходных - около 400).

    Всего записей: 1372 | Зарегистр. 30-04-2003 | Отправлено: 12:03 17-07-2007 | Исправлено: mitrichbel, 12:35 17-07-2007
    Maza Faka



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

    Цитата:
    я не настолько тупой всё-таки

    Я так не считаю! Извини если обидел.
     
    Попробуй этот код, если исходные txt-файлы в DOS кодировке, то сохрани код в DOS кодировке, если ANSI, то и код сохрани в ANSI кодировке:
     

    Код:
     
    @echo off
     
    set folder=c:\test
     
    for /f "tokens=1,2,4*" %%a in ('
    dir /t:w "%folder%\*.txt" ^| find /i ".txt"') do (
    if "%%d"=="" (call:mod %%a %%b %%c) else (call:mod %%a %%b "%%c %%d")
    )
     
    pause
    goto :eof
     
    :mod
    set m_time=%~1 %~2:00
    set m_time=%m_time:.=-%
    if exist %folder%\tmp.txt del /f /q tmp.txt
     
    for /f "delims=" %%f in (
    'more "%folder%\%~3"') do echo %%f | find /i /v "ненужный текст">> %folder%\tmp.txt
     
    del /f /q "%folder%\%~3"
    ren %folder%\tmp.txt %3
    nircmd setfiletime "%folder%\%~3" "" "%m_time%"
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 13:53 17-07-2007
       

    Страницы: 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-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru