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

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

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

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hErAx

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

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

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

  • Отправлено: 01:53 25-10-2015 | Исправлено: Paromshick, 21:51 18-12-2017
    ALEX173



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

    Всего записей: 50 | Зарегистр. 19-08-2012 | Отправлено: 18:55 22-11-2016
    Linksach



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BorlandIMHO
     Пока не пробовал ваши батники,но спасибо говорю!

    Всего записей: 113 | Зарегистр. 11-07-2015 | Отправлено: 19:47 22-11-2016
    BorlandIMHO

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

    Цитата:
    батник некузявый так как использует 3 прохода одного каталога,

    Чуть "кузявее" (используется 1 проход), но с временным файлом:
     
    MoveOldFolders.cmd
    Код:
    @echo off
    set "SOURCEFOLDER=x:\path to\SourceFolder"
    set "TARGETFOLDER=y:\another path to\TargetFolder"
     
    1>nul 2>&1 pushd "%SOURCEFOLDER%" && popd ||call :ABORT "Папка %SOURCEFOLDER% не существует!"
    1>nul 2>&1 pushd "%TARGETFOLDER%" ||call :ABORT "Папка %TARGETFOLDER% не существует!"
     
    copy /y nul "%TEMP%\OldFilesMover.tmpfile.tmp'
    forfiles /P "%SOURCEFOLDER%" /D -7 /C "cmd /c if @isdir==TRUE 1>>%TEMP%\OldFilesMover.tmpfile.tmp echo @file"
    for /f "delims=" %%A in (%TEMP%\OldFilesMover.tmpfile.tmp) do robocopy "%SOURCEFOLDER%\%%~A" "%TARGETFOLDER%\%%~A" /MOVE /E
    del /q %TEMP%\OldFilesMover.tmpfile.tmp
    popd
    goto :EOF
     
    :ABORT
    echo Аварийное завершение работы!
    echo %~1
    pause
    exit
    forfiles составляет список папок старше 7 дней для перемещения, следующий for читает этот список и скармливает его robocopy.
    Ограничение: переменная окружения TEMP не должна содержать пробелов (лично у меня и системная <по умолчанию c:\Windows\temp>, и пользовательская <по умолчанию %USERPROFILE%\AppData\Local\Temp> перенаправлены в специально созданную <на другом физическом диске> папку f:\Temp).

    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 20:54 22-11-2016 | Исправлено: BorlandIMHO, 21:18 22-11-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    BorlandIMHO
    Цитата:
    Ограничение: переменная окружения TEMP не должна содержать пробелов
    Странно. Если это ограничение связано с чтением из файла через FOR - то нужно использовать usebackq

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 21:12 22-11-2016
    BorlandIMHO

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
    Нет, это ограничение связано с forfiles, которую тошнит от "лишних" кавычек.
    А так бы я сразу robocopy в forfiles пихнул...

    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 21:15 22-11-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    BorlandIMHO
    Ну тогда можно сделать 2 батника, второй из первого вызывать. Ну, или если уж совсем с этим никак - пусть вызывает самого себя, но с определенным параметром.

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 21:27 22-11-2016
    BorlandIMHO

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

    Цитата:
    можно сделать 2 батника, второй из первого вызывать
    Можно и 22, не проблема.    
    Но мне как-то больше импонирует принцип "1 утилита - 1 батник"...

    Цитата:
    пусть вызывает самого себя, но с определенным параметром

    По call вызвать метку в текущем батнике не удастся (forfiles запускает свой, отдельный экземпляр cmd.exe), обработка же входящих параметров сильно прибавит батнику громоздкости...
     
    Вариант "через ( | ), зато без временного файла"   : вместо временного файла используется клипборд винды
    MoveOldFoldersClipPaste.cmd
    Код:
    @echo off
    set "SOURCEFOLDER=x:\path to\SourceFolder"
    set "TARGETFOLDER=y:\another path to\TargetFolder"
     
    1>nul 2>&1 pushd "%SOURCEFOLDER%" && popd ||call :ABORT "Папка %SOURCEFOLDER% не существует!"
    1>nul 2>&1 pushd "%TARGETFOLDER%" && popd ||call :ABORT "Папка %TARGETFOLDER% не существует!"
     
    (forfiles /P "%SOURCEFOLDER%" /D -7 /C "cmd /c if @isdir==TRUE echo @file")|clip
    for /f "usebackq delims=" %%A in (`paste`) do robocopy "%SOURCEFOLDER%\%%~A" "%TARGETFOLDER%\%%~A" /MOVE /E
    goto :EOF
     
    :ABORT
    echo Аварийное завершение работы!
    echo %~1
    pause
    exit
    Для того, чтобы поместить список в буфер обмена, используется штатная виндовая утилита clip.exe. Для того, чтобы прочитать буфер используется сторонняя утилита paste.exe (класть рядом с батником или в папку, прописанную в переменной окружения PATH).
    Минус такого подхода: изменяется содержимое буфера обмена. Может быть весьма неприятно, если данный батник запустится в процессе активной работы пользователя с буфером обмена...

    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 23:32 22-11-2016 | Исправлено: BorlandIMHO, 23:43 22-11-2016
    ALEX173



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите как решить проблему "отказ в доступе"хоть с С диска хоть с E
    я в системе админ с полными правами пака в безопасности тоже принадлежит мне cmd тоже запускаю от имени админа
     
    FORFILES.exe /p "E:\1" /C "cmd /c move /y @path F:\2" /d -25

    Всего записей: 50 | Зарегистр. 19-08-2012 | Отправлено: 08:12 23-11-2016 | Исправлено: ALEX173, 12:19 23-11-2016
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ALEX173 Вы что-то не то делаете !
     
    Перемещение одного или более файлов:
    MOVE [/Y | /-Y] [диск:][путь]имя_файла1[,...] назначение
    Переименование папки:
    MOVE [/Y | /-Y] [диск:][путь]имя_папки новое_имя_папки
     
     move /y @path F:\2"  в переменной  @path у вас путь, а должно быть ЕМНИП файл или набор файлов.
    сделай вместо move   команду echo @path  погляди что кажет, потом пробуй сам сделать такую команду move с тем что кажет.

    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11719 | Зарегистр. 10-12-2003 | Отправлено: 09:33 24-11-2016 | Исправлено: ipmanyak, 13:23 24-11-2016
    Linksach



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А может ли батник считывать информацию в инете с сайтов и записывать необходимое например в текстовый файл
    Например с сайта названия мониторов записать в текстовый файл

    Всего записей: 113 | Зарегистр. 11-07-2015 | Отправлено: 19:26 24-11-2016 | Исправлено: Linksach, 19:28 24-11-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Linksach
    Ну для этого существуют командлайновые утилиты, например curl или wget

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 19:37 24-11-2016
    Linksach



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А как ими пользоваться
    С curl помоему имел дело как-то скачивал конфиг роутера и рассшифровывал пароль на питоне,опять  же не сам а помогали
    С wget не имел дела
     
    Добавлено:
    вот с этого сайта хотел бы скачать названия мониторов и записать их в текстовый файл,может поможете
    http://f5.ua

    Всего записей: 113 | Зарегистр. 11-07-2015 | Отправлено: 19:49 24-11-2016 | Исправлено: Linksach, 20:00 24-11-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Linksach
    Цитата:
    А как ими пользоваться
    Ну даже не знаю... Почитать документацию чтоле
     
    Добавлено:
    Linksach
    Проще наверное просто http://f5.ua
    Тут нужна, например, одна из утилей для скачивания + grep/sed а может и что-то посерьезнее.
     
    Добавлено:
    Linksach
    Вот файл CMD + grep + sed + wget - http://rgho.st/6lfG5Mct2

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 19:51 24-11-2016
    Linksach



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
     
    то что надо!!!!!
    Благодарю!
    а как можно с этого сайта скачать программу тв  
    Было бы хорошо если тех каналов что интересует
    Если нужны каналы интересующие,напишу
    http://www.vsetv.com/channels.html
    ВОТ СПИСОК
    http://rgho.st/private/66CPQFglg/72b0b467e5273c561347eebc07e42811

    Всего записей: 113 | Зарегистр. 11-07-2015 | Отправлено: 20:14 24-11-2016 | Исправлено: Linksach, 20:30 24-11-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Linksach
    Вы открыли для себя бат-файлы - и это похвально. Но совсем необязательно теперь все через них делать...

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 20:37 24-11-2016
    Linksach



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ДА просто через них быстрее выходит ,чем я сейчас например скачиваю и сохраняю нужные каналы в mht
    заходя на страницу каждого канала  
    Просто дольше возится надо

    Всего записей: 113 | Зарегистр. 11-07-2015 | Отправлено: 20:43 24-11-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Linksach
    Во-первых, программа обновляется постоянно. Во-вторых, зачем нужны оффлайновые файлы с программой. В-третьих, есть куча гуевых программ для мониторинга и скачивания сайтов полностью/по частям.

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 20:50 24-11-2016
    Linksach



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Необходимо переименовать массу файлов без расширения.Пишет просто файл
    Переименовать нужно в txt
    Все файлы имеют своё название ,название файлов разное
    Вот код переименования одного файла с названием файла

    Код:
    call :rename "actor-names"  
     exit  
     :rename  
     ren "%~1" "%~n1.txt%~x1"  
     goto :eof

     
    Нужно подредактировать батник чтобы переименование было массовое  
    Название должно остатся тоже что и было просто добавится в конце должно расширение txt
    Вот неполный список названий файлв которые нужно переименовать в txt
    http://hkar.ru/MjtZ
     
    Задачу уже решил!
     

    Код:
    ren *.* *.txt

     
    Незадача-при переименовании переименовуется и сам батник в txt
    Как можно сделать чтоб не переименовывался?

    Всего записей: 113 | Зарегистр. 11-07-2015 | Отправлено: 19:35 26-11-2016 | Исправлено: Linksach, 21:01 26-11-2016
    Elroir



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

    Цитата:
    Как можно сделать чтоб не переименовывался?

     
    Поместить батник в другую директорию и запускать оттуда. А в коде написать:

    Код:
     
    ren "Путь к директории с файлами\*.*" *.txt
     

     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:23 26-11-2016
    Inoz2000



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

    Цитата:
    Как можно сделать чтоб не переименовывался?
    вводить команду прямо в консоли.

    ----------
    Мы все умрём. (-:

    Всего записей: 4878 | Зарегистр. 23-04-2009 | Отправлено: 21:29 26-11-2016
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12
    KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru