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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    GORA2



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

    Цитата:
    Опять тот же вопрос: где найти хелп к 7z на русском?
    На этом форуме есть ветка 7-Zip там есть ссылка в шапке.
    Вот прямая ссылка http://gora.solta.ru/for_all/7-Zip_Help_ru_4.55.7z

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 20:00 23-10-2007 | Исправлено: GORA2, 20:03 23-10-2007
    lexalug

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Спасибо огромное!
    А подскажите последнее:
    в данной папке есть файлы qwe.bat и qwe.txt
    при его запуске (qwe.bat), нужно, чтобы он копировал qwe.txt в другую какую-нить папку.
    Расширения всегда остаются те же, а имена файлов сейчас одни, потом -другие, но у обоих файлов одинаковые на момент выполнения.
    Как это зделать?  
    Напомню - Windows 98.
     
    %~n0 (98я такого не знает), а  %0 (98я видит вместе с расширением, т.е. не напишешь ...  %0.txt ...  , это она распознает как qwe.bat.txt) - не проходят.

    Всего записей: 3 | Зарегистр. 22-10-2007 | Отправлено: 00:35 24-10-2007 | Исправлено: lexalug, 00:36 24-10-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    lexalug
    Либо в начале батничка прописывай явно название текстового файла
    либо wsh

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 00:42 24-10-2007
    01MDM



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

    Код:
     
    @ECHO OFF
    copy %0.txt Path\to\folder >nul
     

     
    Поставь лучше 4DOS и не мучайся, возможностей как в cmd, а то и больше. И совсем бесплатен.
     
    http://www.jpsoft.com/ftp/free/4dos750.exe
     
    Пропиши в %COMSPEC% в autoexec.bat и наслаждайся
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:59 24-10-2007 | Исправлено: 01MDM, 10:44 24-10-2007
    William Gates

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndryG
    Исправив синтаксические ошибки
    Цитата:
    %errorllevel%

    все сработало, спасибо.
     
    Добавлено:
    GORA2
    7-Zip_Help_ru_4.55.7z - то что надо
     
    Добавлено:
    А может один батник запускать другой, который находится на другом компе?  

    Всего записей: 22 | Зарегистр. 12-10-2007 | Отправлено: 11:54 24-10-2007
    KapralBel



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

    Цитата:
    А может один батник запускать другой, который находится на другом компе?  

    Без проблем
     

    Код:
     
    call \\comp_drugoj\bat\super1.bat
    \\comp_tretij\bat\super2.bat
     


    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:27 24-10-2007
    PrinceX



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите можно ли как-то переименовывать файл согласно номеру дня недели?

    Всего записей: 105 | Зарегистр. 15-01-2002 | Отправлено: 12:36 24-10-2007
    Tipulatoid



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

    Код:
    @echo off
    set file=test.txt
    echo wscript.echo WeekDayName(weekday(date))>day.vbs
    for /f %%a in ('cscript day.vbs //Nologo') do set day=%%a
    del /q day.vbs
    ren %file% %day%.txt
     

     
    Добавлено:
    Тьфу ты, тебе же нужен номер дня, а не само название:

    Код:
    @echo off
    set file=test.txt  
    echo wscript.echo WeekDayName(weekday(date))>day.vbs  
    for /f %%a in ('cscript day.vbs //Nologo') do set day=%%a  
    del /q day.vbs
     
    if /i %day%==понедельник ren %file% 1.txt
    if /i %day%==вторник ren %file% 2.txt
    if /i %day%==среда ren %file% 3.txt
    if /i %day%==четверг ren %file% 4.txt
    if /i %day%==пятница ren %file% 5.txt
    if /i %day%==суббота ren %file% 6.txt
    if /i %day%==воскресенье ren %file% 7.txt
     

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 15:44 24-10-2007 | Исправлено: Tipulatoid, 16:45 24-10-2007
    wolf0425



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

    Цитата:
    Тьфу ты, тебе же нужен номер дня, а не само название:
    echo wscript.echo WeekDayName(weekday(date))>day.vbs  

    Tipulatoid, а зачем сначала получать день нелели циферкой, потом преобразовывать в слово, а потом снова в другую циферку?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:24 24-10-2007
    William Gates

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1. Есть список файлов такого вида "name_24.10.2007-06.00.zip" и т.д. Вопрос: как из этого списка удалить все файлы, оставив только по одному файлу за месяц?
    2. То же самое, только оставить два файла: с первой датой в месяце и с последней?

    Всего записей: 22 | Зарегистр. 12-10-2007 | Отправлено: 17:57 24-10-2007
    PrinceX



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

    Всего записей: 105 | Зарегистр. 15-01-2002 | Отправлено: 18:23 24-10-2007
    pgofman2

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    как из бат файла сделать папку расшаренной с общим доступом и с определенным именем
    ?
     
    половину постов перелопатил - ненашел советов по этому вопросу
     
    заранее благодарен

    Всего записей: 66 | Зарегистр. 07-09-2006 | Отправлено: 18:43 24-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    William Gates
    разобрать оператором for
    еще вариант
    forfiles/d -24.10.2007 /c "cmd /c echo @fname старее указанной даты"
    утилита forfiles есть в win2k3 и в сети, если не найдешь, пиши в личку

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 19:03 24-10-2007
    Elroir



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

    Цитата:
    Чёт не работает  

    Попробуй так:

    Код:
     
    @echo off
    set "file=test.txt"
    echo wscript.echo weekday(date)>"day.vbs"
    for /f %%a in ('cscript day.vbs //Nologo') do set "day=%%a"
    del /q day.vbs  
    ren "%file%" "%day%.txt"
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:23 24-10-2007
    Tipulatoid



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

    Цитата:
    Чёт не работает  

    Какая версия Винды (XP, 2000, Vista или что другое)? Какой язык у Винды (русский,английский)? В какой кодировке сохраняешь батник (866 или 1251)? Концевые пробелы удалил?
    wolf0425
    Не понял вопроса. Вроде скрипт day.vbs сообщает название дня недели, а не номер.

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 00:08 25-10-2007
    Elroir



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

    Цитата:
    1. Есть список файлов такого вида "name_24.10.2007-06.00.zip" и т.д. Вопрос: как из этого списка удалить все файлы, оставив только по одному файлу за месяц?


    Код:
     
    @echo off
    for /l %%a in (1,1,12) do call :select "%%a"
    goto :EOF
    :select
    set "month=%~1"
    if %month% lss 10 set "month=0%month%"
    for /f "skip=1 tokens=*" %%b in ('dir /b /o-d /a-d *_??.%month%.*.zip') do del /q /f "%%b"
     

     

    Цитата:
    2. То же самое, только оставить два файла: с первой датой в месяце и с последней?


    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    for /l %%a in (1,1,12) do call :select "%%a"
    goto :EOF
    :select
    set "month=%~1"
    if %month% lss 10 set "month=0%month%"
    for /l %%c in (1,1,31) do (
     set "day=%%c"
     if !day! lss 10 set "day=0!day!"
     if exist *_!day!.%month%.*.zip (
      if not defined first (
       for /f "tokens=*" %%b in ('dir /b /o-d /a-d *_!day!.%month%.*.zip 2^>nul') do set "first=%%b"
      )
      for /f "tokens=*" %%b in ('dir /b /od /a-d *_!day!.%month%.*.zip 2^>nul') do set "last=%%b"
     )
    )
    for /f "tokens=*" %%b in ('dir /b /od /a-d *_??.!month!.*.zip 2^>nul') do (
     if not "%%b"=="!first!" (
      if not "%%b"=="!last!" del /q /f "%%b"
     )
    )
    set "first="
    set "last="
     

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

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:17 25-10-2007
    whitecherep

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, подскажите новичку.  
     
    Работают ли bat-файлы (DOS, Windows) в Linux? Или может есть аналоги (если можно ссылки)  
     
    Просто интересует возможное решение задания:  
     
    есть комп под ОС Unix (ArchLinux), на нем типа автозагрузкой запущена программа, которая постоянно работает, больше комп ни в каких других целях не используется (например клавы и мыши нет (устройств ввода)).  
     
    Есть флешка, на ней файлы. Нужно чтобы нужные файли с флешки скопировались на этот комп, а некоторые удалились с этого компа.  
     
    Например в Windows для решения этой задачи можно было написать bat-ник с соответствующими функциями (копирования, удаления, переименования и т.д.) и поставить на автозагрузку на флешке (Тоесть, при подключении флешки - запускался батник, выполнялись прописанные манипуляции и через некоторое время все было готово).  А можно ли как-то это реализовать в Linux?

    Всего записей: 38 | Зарегистр. 14-02-2006 | Отправлено: 03:15 25-10-2007
    Maza Faka



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

    Цитата:
    сделать папку расшаренной


    Код:
     
    net share MyShare=D:\Resource /unlimited
     

    Смотри справку net share /?
     
    Добавлено:
    William Gates

    Цитата:
    удалить все файлы, оставив только по одному файлу за месяц?

    Вариант: оставляем все файлы с именем 1-го числа любого месяца, остальные удаляем

    Код:
     
    @echo off
    for /f "delims=" %%a in ('dir *.zip /b ^| findstr /i /v "^[a-z]*_01.*"') do del /f /q %%a
     

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



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите пожалуйста, нужно переименовать папку gold_system в system, потом обратно в gold_system. Как это в батнике зделать?

    Всего записей: 429 | Зарегистр. 18-05-2004 | Отправлено: 09:18 25-10-2007
    pgofman2

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka
     
    огромное спасибо
    ненашел там только как снять расшаренность

    Всего записей: 66 | Зарегистр. 07-09-2006 | Отправлено: 09:24 25-10-2007 | Исправлено: pgofman2, 09:26 25-10-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 100 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru