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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    YuS_2TMP
    И чем же
    Цитата:
    dir /s
    круче
    Цитата:
    FOR /R


    Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 17:33 08-04-2016
    YuS_two



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
    Эмм, это не буквально, а в том смысле, что у dir есть ключи дополнительные... возможно, что, как раз, они потребовались. Мы же не телепаты... во всяком случае, я точно нет.
     
    Добавлено:
    Т.е. в некоторых случаях разница значительная.  
    Вот тут накидал примерчик наглядный:
    Пример

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 17:45 08-04-2016
    vint56



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста написать батник хочу чтобы precomp обрабатывал файлы много поточно
    Суть проблемы такова после распаковки фалов игры в каталог {app} каталог восстановления идет нормально но проблема с под папками Пример {app}\Data  
    после восстановления всех файлов в папке Data а они должны лежать в папке Data но они восстанавливаются в {app} проще говоря все файлы в кучу                                    
    dir /b *.pcf | ppx2.exe -P %NUMBER_OF_PROCESSORS% -L 1 precomp.exe -r "{}"

    Всего записей: 1277 | Зарегистр. 07-10-2008 | Отправлено: 08:19 10-04-2016 | Исправлено: vint56, 08:20 10-04-2016
    YuS_two



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

    Цитата:
    но проблема с под папками


    Цитата:

    Код:
    dir /b *.pcf | ppx2.exe -P %NUMBER_OF_PROCESSORS% -L 1 precomp.exe -r "{}"

    Так при чем здесь сценарии bat? Смотрите документацию к ppx2.exe, precomp.exe - кто распаковывает, того и "тапки"...

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 09:36 10-04-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    vint56
    Тут просто DIR не обойтись, надо сформировать в комстроке еще полное имя с путем для выходного файла в ключе -o.
    А чтобы его можно было узнать - надо при начальной обработке прекомпом именовать файлы, например, по маске NAME.EXT.pcf.
    Вариант 2: запускать через PPX2 батник (через CMD /C), а в нем уже пространства для манервра гораздо больше (подсказка: в нем надо менять текущий каталог на тот, в котором лежит PCF-файл).

    Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 11:26 11-04-2016
    vint56



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

    Всего записей: 1277 | Зарегистр. 07-10-2008 | Отправлено: 12:04 11-04-2016 | Исправлено: vint56, 12:20 11-04-2016
    fractalzZz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет. Извинясь, если не совсем по теме, так как не нашёл подходящей темы для вопроса.  
     
    Есть текстовый файл с путями и нужно проверить, что каждый файл по пути существует.  
    Какое самое простое решение для этого ? Может есть просто какая-то простая утилита, которая принимает на вход файл ?

    Всего записей: 66 | Зарегистр. 08-11-2010 | Отправлено: 13:59 11-04-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    fractalzZz
    А в каком виде надо получить результаты проверки? В принципе, FOR /F + IF EXIST, в 1 строчку

    Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 14:02 11-04-2016
    fractalzZz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В любом виде/формате, где понятно существует файл по пути или нет.

    Всего записей: 66 | Зарегистр. 08-11-2010 | Отправлено: 14:06 11-04-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    fractalzZz
    Можно создать файл со списком отсутствующих файлов, можно создать со списком только существующих.
    Цитата:
    del /f /q my_filelist.txt
    for /f "tokens=*" %%a in (filelist.txt) do if NOT exist "%%a" echo.%%a>>my_filelist.txt
    my_filelist.txt - вновь полученный список файлов
    filelist.txt - проверяемый список
     
    Как есть - получим список несуществующих файлов. Если убрать выделенный NOT - то существующих.

    Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 14:27 11-04-2016
    fractalzZz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
     
    Я попробовал этот способ - не сработало. Пример: есть путь типа  
    X:\#G2006 1\__A\2006-путь\имя.pdb - эти файлы существуют, но всё равно идут в файл my_filelist.txt, а так как на обработку отправлено несколько тысяч путей, то могут быть и другие пропущенные в выходной файл, но сушествующие.
     

    Всего записей: 66 | Зарегистр. 08-11-2010 | Отправлено: 18:13 12-04-2016
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fractalzZz
    Попробуй:
    echo "%%a">>my_filelist.txt

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:55 17-04-2016
    fractalzZz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Попробовал, этот вариант также отрабатывает, но опять не до конца. Значит, первое, что прямо бросается в глаза - имена в путях с символами наподобие  "&#251;", "&#226;" (там как форум отображает тут не символ, а их код - имелись ввиду символы, наподобие немецких умляутов, например "u"+"^" сверху или "о" + ".."сверху) и другие unicode-like - батник пропускает - это не допустимо.

    Всего записей: 66 | Зарегистр. 08-11-2010 | Отправлено: 00:54 18-04-2016 | Исправлено: fractalzZz, 01:00 18-04-2016
    nik4z



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

    Код:
    del /f /q my_filelist.txt
    for /f "tokens=*" %%a in (filelist.txt) do if NOT exist "%%~sa" echo."%%a">>my_filelist.txt  
     

    Всего записей: 218 | Зарегистр. 08-11-2015 | Отправлено: 01:12 18-04-2016 | Исправлено: nik4z, 01:12 18-04-2016
    fractalzZz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    nik4z
     
    Так тоже пропускает файлы с unicode символами.

    Всего записей: 66 | Зарегистр. 08-11-2010 | Отправлено: 01:32 18-04-2016
    nik4z



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

    Код:
    del /f /q my_filelist.txt
    for /f "tokens=*" %%a in (filelist.txt) do dir /b /a:-d  "%%~sa"  ||  echo."%%a">>my_filelist.txt  

     

    Всего записей: 218 | Зарегистр. 08-11-2015 | Отправлено: 01:47 18-04-2016 | Исправлено: nik4z, 01:50 18-04-2016
    fractalzZz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    nik4z
     
    Второй вариант - тот же результат - пропускает все unicode файлы. Причем (как и во всех случаях ранее) в самом выходном my_filelist.txt файле имя получаеся без юникод символов (могу предположить оно как-то преобразует имя и потом ищет по этому имени).

    Всего записей: 66 | Зарегистр. 08-11-2010 | Отправлено: 02:39 18-04-2016
    nik4z



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

    Код:
    del /f /q my_filelist.txt
    for /f "tokens=*" %%a in (filelist.txt)   echo."%%a">>my_filelist.txt  
     

    и сравни filelist.txt и my_filelist.txt , будут ли они одинаковы.
     
    Добавлено:
    fractalzZz

    Цитата:
     Причем (как и во всех случаях ранее) в самом выходном my_filelist.txt файле имя получаеся без юникод символов (могу предположить оно как-то преобразует имя и потом ищет по этому имени).

    Возможно, это поможет.

    Код:
    del /f /q my_filelist.txt
    for /f "tokens=*" %%a in (filelist.txt) do dir /b /a:-d  "%%~sa"  ||  for /f %%b in ("%%a") do echo.%%b>>my_filelist.txt  


    Всего записей: 218 | Зарегистр. 08-11-2015 | Отправлено: 02:48 18-04-2016
    VidelSamogO



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А как разложить папки по папкам, создавая каталоги с именами и датами на основе дат создания вложенных каталогов?
     
    Пример  
     
    Условие.  
    Перегруженный каталог с сохранёнными из браузера страницами вида.  
    Downloads\СтенаВ древнем Китае было обнаружено_files\
    Downloads\СтенаВ древнем Китае было обнаружено.html
    И таких страниц и сохранений сотни тысяч. Всё в одном каталоге.
    Задача.
    Разбросать по каталогам с именами в виде [год_месяц] дат последнего файла(папки) в данном каталоге. При том самим новым папкам задать дату последнего файла (папки) в ней.
     
    Помесячно нужно разделить перегруженный каталог.
     
     
    Есть программы, батники и другие скрипты на эту тему. Но чтобы могли работать именно вот в такои плане с каталогами, я не встретил.  
     
    Иллюстрация
     
    Задачу решил. Но не средствамми программировани я, а пользуясь фишками сторонних программ. Но всё же было бы интересно решить с помощью командного файла.
     

    Всего записей: 765 | Зарегистр. 16-08-2008 | Отправлено: 12:30 18-04-2016 | Исправлено: VidelSamogO, 00:18 19-04-2016
    fractalzZz



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

    Цитата:
    А просто выполни такой батник

    Файлы получились различные, но единственное отличие - это то, что все пути в кавычках в выходном файле.
     

    Цитата:
    Возможно, это поможет.  

    Это не помогло - скорее всего там ошибка, так как в выходном файле неполные пути, а только каталоги из команды dir.
     

    Всего записей: 66 | Зарегистр. 08-11-2010 | Отправлено: 21:59 18-04-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