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

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AntoshAReal
    А сам скрипт-то доступен по этому пути?

    Код:
    %netlogon%\user_pc.cmd

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 12:12 17-06-2016
    AntoshAReal



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_two, да, сам скрипт доступен. Я же писал что выполняется только первая часть, если компа с таким именем нет, то второе условие не выполняется.

    Всего записей: 305 | Зарегистр. 31-08-2005 | Отправлено: 12:52 17-06-2016 | Исправлено: AntoshAReal, 12:52 17-06-2016
    tong9

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Совет поменять кодировку батника на cp866 (OEM) помог в копировании файлов. Спасибо!
    Теперь заметил, что скрипт не находит файлы в русских подпапках. Как это можно вылечить?
    FOR /R d:\Папка\ %%a in (files*.*) DO XCOPY %%a "d:\Папка\files" /f /h /k /y
     
     
    Добавлено:
    Заметил, что не копирует из папок с русскими названиями с пробелами. Если имя папки русское и без пробелов, то копирует. В команде XCOPY кавычками переменную  с копируемым файлом выделял - не помогло. Какие ещё могут быть варианты?

    Всего записей: 11 | Зарегистр. 27-02-2015 | Отправлено: 18:03 17-06-2016
    AntoshAReal



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

    Код:
     
    FOR /R d:\Папка\ %%a in ("files*.*") DO XCOPY "%%a" "d:\Папка\files" /f /h /k /y
     


    Всего записей: 305 | Зарегистр. 31-08-2005 | Отправлено: 20:37 17-06-2016 | Исправлено: AntoshAReal, 20:41 17-06-2016
    YuS_two



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

    Цитата:
    выполняется только первая часть, если компа с таким именем нет, то второе условие не выполняется.

    Там нет второго условия, оно всего одно. Это простой условный оператор: если равенство истинное, тогда выполняется то, что записано в скобках сразу за равенством, а если равенства нет, то выполняются команды в скобках, следующих за оператором Else.  
    Если доступность скрипта проверена, то остается единственный вариант, что скрипт user_pc.cmd сам неисправен и просто не работает... проверить легко: надо его запустить отдельно, из комстроки %logonserver%\netlogon\user_pc.cmd
     
    tong9

    Цитата:
    не копирует из папок с русскими названиями с пробелами.


    Цитата:
    FOR /R d:\Папка\ %%a in (files*.*) DO XCOPY %%a "d:\Папка\files" /f /h /k /y

    Для того, чтобы xcopy работало с именами содержащими пробелы, как минимум, необходимо заключить в кавычки источник, а если целевой объект содержит пробелы, то и его. Да и вообще, где могут присутствовать пробелы в именах, рекомендуется ставить в кавычки, особенно переменные.
    В общем, если коротко, в данном случае переменная "%%a", которая после xcopy, не закавычена...

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 23:29 17-06-2016
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    добрый вечер!
     
    У меня есть 207 папок с одинаковыми файлами (отличие в размере файлов). Подскажите, как мне сделать таблицу в формате csv, и указать размеры всех файлов.
     
    До этого использовал такой вариант, но сейчас он не подходит.

    Код:
    @echo off
     
    for %%i in (x\*) do call :s1 "x\%%~nxi" "u\%%~nxi" "d\%%~nxi" "l\%%~nxi" "r\%%~nxi" "f\%%~nxi"
     
    :s1
    shift
    echo %~z0;%~z1;%~z2;%~z3;%~z4;%~z5>>1.csv
    exit /b

    Вот названия папок:

    Цитата:
    b,u,d,l,r,f,ud,ul,ur,uf,du,dl,dr,df,lu,ld,lr,lf,ru,rd,rl,rf,fu,fd,fl,fr,udl,udr,udf,uld,ulr,ulf,urd,url,urf,ufd,ufl,ufr,dul,dur,duf,dlu,dlr,dlf,dru,drl,drf,dfu,dfl,dfr,lud,lur,luf,ldu,ldr,ldf,lru,lrd,lrf,lfu,lfd,lfr,rud,rul,ruf,rdu,rdl,rdf,rlu,rld,rlf,rfu,rfd,rfl,fud,ful,fur,fdu,fdl,fdr,flu,fld,flr,fru,frd,frl,udlr,udlf,udrl,udrf,udfl,udfr,uldr,uldf,ulrd,ulrf,ulfd,ulfr,urdl,urdf,urld,urlf,urfd,urfl,ufdl,ufdr,ufld,uflr,ufrd,ufrl,dulr,dulf,durl,durf,dufl,dufr,dlur,dluf,dlru,dlrf,dlfu,dlfr,drul,druf,drlu,drlf,drfu,drfl,dful,dfur,dflu,dflr,dfru,dfrl,ludr,ludf,lurd,lurf,lufd,lufr,ldur,lduf,ldru,ldrf,ldfu,ldfr,lrud,lruf,lrdu,lrdf,lrfu,lrfd,lfud,lfur,lfdu,lfdr,lfru,lfrd,rudl,rudf,ruld,rulf,rufd,rufl,rdul,rduf,rdlu,rdlf,rdfu,rdfl,rlud,rluf,rldu,rldf,rlfu,rlfd,rfud,rful,rfdu,rfdl,rflu,rfld,fudl,fudr,fuld,fulr,furd,furl,fdul,fdur,fdlu,fdlr,fdru,fdrl,flud,flur,fldu,fldr,flru,flrd,frud,frul,frdu,frdl,frlu,frld

     
    Думал сделать на подобии  

    Код:
    for %%j in (b,u,d,l,r,f,ud,ul,ur,uf,du,dl,dr,df,lu,ld,lr,lf,ru,rd,rl,rf,fu,fd,fl,fr,udl,udr,udf,uld,ulr,ulf,urd,url,urf,ufd,ufl,ufr,dul,dur,duf,dlu,dlr,dlf,dru,drl,drf,dfu,dfl,dfr,lud,lur,luf,ldu,ldr,ldf,lru,lrd,lrf,lfu,lfd,lfr,rud,rul,ruf,rdu,rdl,rdf,rlu,rld,rlf,rfu,rfd,rfl,fud,ful,fur,fdu,fdl,fdr,flu,fld,flr,fru,frd,frl,udlr,udlf,udrl,udrf,udfl,udfr,uldr,uldf,ulrd,ulrf,ulfd,ulfr,urdl,urdf,urld,urlf,urfd,urfl,ufdl,ufdr,ufld,uflr,ufrd,ufrl,dulr,dulf,durl,durf,dufl,dufr,dlur,dluf,dlru,dlrf,dlfu,dlfr,drul,druf,drlu,drlf,drfu,drfl,dful,dfur,dflu,dflr,dfru,dfrl,ludr,ludf,lurd,lurf,lufd,lufr,ldur,lduf,ldru,ldrf,ldfu,ldfr,lrud,lruf,lrdu,lrdf,lrfu,lrfd,lfud,lfur,lfdu,lfdr,lfru,lfrd,rudl,rudf,ruld,rulf,rufd,rufl,rdul,rduf,rdlu,rdlf,rdfu,rdfl,rlud,rluf,rldu,rldf,rlfu,rlfd,rfud,rful,rfdu,rfdl,rflu,rfld,fudl,fudr,fuld,fulr,furd,furl,fdul,fdur,fdlu,fdlr,fdru,fdrl,flud,flur,fldu,fldr,flru,flrd,frud,frul,frdu,frdl,frlu,frld) do for %%i in (%%j\*) do echo %%~zi>>%%j.csv

     
    Как это объединить в единую таблицу?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 23:00 18-06-2016 | Исправлено: lorents, 23:05 18-06-2016
    Ciber SLasH



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

    Код:
    @echo off
    REM FileSize to CSV
    if "%~1"=="" (
        echo Usage: %~nx0 ^<folderFullPath^> [^<CSV-fullPath^>]
        pause & goto :EOF
    )
    if not exist "%~1" (
        echo "%~1" not exist!
        pause & goto :EOF
    )
    setlocal EnableDelayEdExpansion
    set "folder=%~dp1"
    set "fileCSV=%~2"
    set "fileCSV_def=%~dp0%~n0.csv"
    if not exist "%~dp2" (
        set "fileCSV=%fileCSV_def%"
    )
    1>"%fileCSV%" echo Size;FileName
    for /r "%folder%" %%A in (*) do (
        set "fs=%%~znxA"
        for /f "tokens=1,*" %%B in ("!fs!") do (
            set "st=%%~B;%%~C"
            1>>"%fileCSV%" echo !st!
        )
    )
    endlocal

    Всего записей: 261 | Зарегистр. 07-04-2016 | Отправлено: 00:01 19-06-2016 | Исправлено: Ciber SLasH, 17:06 19-06-2016
    YuS_two



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ciber SLasH
    1. Пробелы в именах не учтены.  
    2. Размер с одинаковыми именами файлов, без абсолютного/относительного пути, трудно будет использовать в дальнейшем...
    3. Скорее всего папки находятся в одном каталоге (lorents это никак не обозначил), но если вдруг пути будут разные или кроме перечисленных у него папок, там будут находится другие, то этот код уже не совсем корректно выведет результат...

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 08:16 19-06-2016
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ciber SLasH
    Мне по сути надо сделать таблицу с размерами файлов, чтобы в одной строке было указано 207 значений.
     
      110239 109942 109482 110721 110576 110014 110099 110356 110239 109942  

    YuS_two
    Папки лежат в одном каталоге, все вместе.

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 10:39 19-06-2016 | Исправлено: lorents, 10:45 19-06-2016
    YuS_two



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

    Цитата:
    Папки лежат в одном каталоге, все вместе.

    Кроме нужных (207 - количество папок или файлов? или там в каждой папке по одному файлу?), есть там ещё какие-либо папки? Если их нет, то вариант от Ciber SLasH, вполне подойдет, даже без поправки на пробелы... просто переменную %%C убрать и всё.
    А вообще, какой смысл в этих числах? Чтобы было просто красиво или общие/средние размеры посчитать надо?
    Можно всё это на powershell сделать и там же посчитать, причем вообще не трогая таблиц...
     

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 12:36 19-06-2016
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_two
    У меня есть папку, и там лежат - 206 папок (скорректировал). В каждой папке лежат 8185 файлов с одинаковыми названиями, но с разными размерами. Вот мне надо построить таблицу с размерами этих файлов.
     
    Когда папок было мало, я делал так:

    Код:
    @echo off
     
    for %%i in (b\*) do call :s1 "b\%%~nxi" "u\%%~nxi" "d\%%~nxi" "l\%%~nxi" "r\%%~nxi" "f\%%~nxi"
     
    :s1
    shift
    echo %~z0;%~z1;%~z2;%~z3;%~z4;%~z5>>1.csv
    exit /b

     
    А сейчас папок 206 шт.
     
    После этого специальны макрос будет обрабатывать информацию в таблице.

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 13:31 19-06-2016 | Исправлено: lorents, 13:33 19-06-2016
    YuS_two



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

    Цитата:
    В каждой папке лежат 8185 файлов с одинаковыми названиями

    Это как и чем их создавали и в какой ОС? Или они отличаются расширениями?
     

    Цитата:
    А сейчас папок 206 шт.

    Это абсолютно неважно, в смысле количество папок.  
    Важно то, для чего размеры файлов в таблицу пихать... и если в каждой папке 8185 файлов, то построчно с 206 столбцами ... хмм, надо подумать.
    Чисто из любопытства: что с ними можно делать без привязки к самим файлам? И размеры от всех файлов требуется в таблицу помещать?

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 14:37 19-06-2016
    lorents



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

    Цитата:
     Чисто из любопытства: что с ними можно делать без привязки к самим файлам? И размеры от всех файлов требуется в таблицу помещать?

    Я занимаюсь оптимизаций изображений, и для каждой папки с файлами использую определенные параметры оптимизации. После того как я получу результаты, я смогу комбинировать параметры оптимизации, и могу понять, какие параметры дают лучший результат, а какие худший.

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 14:55 19-06-2016
    YuS_two



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

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

    Ну вот же! Всё таки привязка нужна... и нужна она относительно папок, если я правильно понял. Иначе каким образом из таблицы будет понятно откуда (из какой папки) получены цифры?
     
    Но вопросы остались без ответа... по поводу:
    1. Все ли файлы требуется обрабатывать по размеру?
    2. Как выглядит окончательная таблица? А именно: что будет в строках, а что в столбцах?
    3. Так и не расшифровано: что такое одинаковые файлы? Одинаковое имя и разные расширения, или в чем одинаковость?

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 15:27 19-06-2016
    Ciber SLasH



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

    Цитата:
    1. Пробелы в именах не учтены

    Поправил (tokens=1,*).

    Цитата:
    2. Размер с одинаковыми именами файлов, без абсолютного/относительного пути, трудно будет использовать в дальнейшем...  

    Это можно легко поправить. ТС неправильно ставить постановку задачи.
     
    lorents

    Цитата:
    Мне по сути надо сделать таблицу с размерами файлов, чтобы в одной строке было указано 207 значений.  

    Тогда так:

    Код:
    @echo off
    REM FileSize to CSV
    if "%~1"=="" (
        echo Usage: %~nx0 ^<folderFullPath^> [^<CSV-fullPath^>]
        pause & goto :EOF
    )
    if not exist "%~1" (
        echo "%~1" not exist!
        pause & goto :EOF
    )
    setlocal EnableDelayEdExpansion
    set "folder=%~dp1"
    set "fileCSV=%~2"
    set "fileCSV_def=%~dp0%~n0.csv"
    if not exist "%~dp2" (
        set "fileCSV=%fileCSV_def%"
    )
    set "fs="
    for /r "%folder%" %%A in (*) do (
        set "fs=!fs!;%%~zA"
    )
    set "fs=%fs:~1%"
    1>"%fileCSV%" echo %fs%
    endlocal

    Всего записей: 261 | Зарегистр. 07-04-2016 | Отправлено: 17:13 19-06-2016
    YuS_two



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

    Цитата:
    Это можно легко поправить. ТС неправильно ставить постановку задачи.

    Да, это так. И наводящими вопросами не выудишь информацию...

    Цитата:
    Тогда так:

    Это не всё, что требуется, если доверять моему чувству телепатирования... вот, тут есть дополнение:

    Цитата:
    там лежат - 206 папок (скорректировал). В каждой папке лежат 8185 файлов с одинаковыми названиями, но с разными размерами. Вот мне надо построить таблицу с размерами этих файлов.  

    Думаю, что требуется 206 столбцов (по одному на папку) и 8185 строк (по строке на файл)...
     
    Вот тут на PS накидал сценарий, который для каждой папки будет создавать свой .csv:

    Код:
    $pth='c:\TEST'
    $fp='b','u','d','l','r','f','ud','ul','ur','uf','du','dl','dr','df','lu','ld','lr','lf','ru','rd','rl','rf','fu','fd','fl','fr','udl','udr','udf','uld','ulr','ulf','urd','url','urf','ufd','ufl','ufr','dul','dur','duf','dlu','dlr','dlf','dru','drl','drf','dfu','dfl','dfr','lud','lur','luf','ldu','ldr','ldf','lru','lrd','lrf','lfu','lfd','lfr','rud','rul','ruf','rdu','rdl','rdf','rlu','rld','rlf','rfu','rfd','rfl','fud','ful','fur','fdu','fdl','fdr','flu','fld','flr','fru','frd','frl','udlr','udlf','udrl','udrf','udfl','udfr','uldr','uldf','ulrd','ulrf','ulfd','ulfr','urdl','urdf','urld','urlf','urfd','urfl','ufdl','ufdr','ufld','uflr','ufrd','ufrl','dulr','dulf','durl','durf','dufl','dufr','dlur','dluf','dlru','dlrf','dlfu','dlfr','drul','druf','drlu','drlf','drfu','drfl','dful','dfur','dflu','dflr','dfru','dfrl','ludr','ludf','lurd','lurf','lufd','lufr','ldur','lduf','ldru','ldrf','ldfu','ldfr','lrud','lruf','lrdu','lrdf','lrfu','lrfd','lfud','lfur','lfdu','lfdr','lfru','lfrd','rudl','rudf','ruld','rulf','rufd','rufl','rdul','rduf','rdlu','rdlf','rdfu','rdfl','rlud','rluf','rldu','rldf','rlfu','rlfd','rfud','rful','rfdu','rfdl','rflu','rfld','fudl','fudr','fuld','fulr','furd','furl','fdul','fdur','fdlu','fdlr','fdru','fdrl','flud','flur','fldu','fldr','flru','flrd','frud','frul','frdu','frdl','frlu','frld'
    $files= dir -recurse $pth\*|select len*,fulln*
    foreach ($fd in $fp){if(test-path $fd\*.*){$files|where{$_.FullName -match '\\'+$fd+'\\'}|export-csv $fd'.csv' -encoding UTF8}}

    - список папок в переменной $fp. А дальше уже можно склеивать столбцы в самом Excel, ибо лень напрягать мозги, чтобы сделать это в powershell  

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 19:37 19-06-2016 | Исправлено: YuS_two, 07:54 20-06-2016
    lorents



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

    Цитата:
     1. Все ли файлы требуется обрабатывать по размеру?  

    да все файлы

    Цитата:
     2. Как выглядит окончательная таблица? А именно: что будет в строках, а что в столбцах?  

    строки отображают информацию о файле, столбец - размер этого файла.

    Цитата:
     3. Так и не расшифровано: что такое одинаковые файлы? Одинаковое имя и разные расширения, или в чем одинаковость?  

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

    Код:
    for %%j in (b,u,d,l,r,f,ud,ul,ur,uf,du,dl,dr,df,lu,ld,lr,lf,ru,rd,rl,rf,fu,fd,fl,fr,udl,udr,udf,uld,ulr,ulf,urd,url,urf,ufd,ufl,ufr,dul,dur,duf,dlu,dlr,dlf,dru,drl,drf,dfu,dfl,dfr,lud,lur,luf,ldu,ldr,ldf,lru,lrd,lrf,lfu,lfd,lfr,rud,rul,ruf,rdu,rdl,rdf,rlu,rld,rlf,rfu,rfd,rfl,fud,ful,fur,fdu,fdl,fdr,flu,fld,flr,fru,frd,frl,udlr,udlf,udrl,udrf,udfl,udfr,uldr,uldf,ulrd,ulrf,ulfd,ulfr,urdl,urdf,urld,urlf,urfd,urfl,ufdl,ufdr,ufld,uflr,ufrd,ufrl,dulr,dulf,durl,durf,dufl,dufr,dlur,dluf,dlru,dlrf,dlfu,dlfr,drul,druf,drlu,drlf,drfu,drfl,dful,dfur,dflu,dflr,dfru,dfrl,ludr,ludf,lurd,lurf,lufd,lufr,ldur,lduf,ldru,ldrf,ldfu,ldfr,lrud,lruf,lrdu,lrdf,lrfu,lrfd,lfud,lfur,lfdu,lfdr,lfru,lfrd,rudl,rudf,ruld,rulf,rufd,rufl,rdul,rduf,rdlu,rdlf,rdfu,rdfl,rlud,rluf,rldu,rldf,rlfu,rlfd,rfud,rful,rfdu,rfdl,rflu,rfld,fudl,fudr,fuld,fulr,furd,furl,fdul,fdur,fdlu,fdlr,fdru,fdrl,flud,flur,fldu,fldr,flru,flrd,frud,frul,frdu,frdl,frlu,frld) do for %%i in (%%j\*) do echo %%~zi>>%%j.csv  

     
    ранее я делал так, и получал необходимую таблицу.

    Код:
    @echo off
     
    for %%i in (b\*) do call :s1 "b\%%~nxi" "u\%%~nxi" "d\%%~nxi" "l\%%~nxi" "r\%%~nxi" "f\%%~nxi"
     
    :s1
    shift
    echo %~z0;%~z1;%~z2;%~z3;%~z4;%~z5>>1.csv
    exit /b  

     
    Ciber SLasH
    мне выдает ошибку

    Цитата:
    Слишком длинная входная строка.
    Ошибка в синтаксисе команды.

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 20:59 19-06-2016 | Исправлено: lorents, 21:16 19-06-2016
    nik4z



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

    Код:
    for %%j in (b,u,d,l,r,f,ud,ul,ur,uf,du,dl,...,frld) do (
      for %%i in (%%j\*) do (
        echo.|set /p= %%~zi;>>1.csv
        echo.>>1.csv
      )
    )

     
     
    Добавлено:
    Только во второй строке файлы будут искаться в произвольном порядке, табица будет бессмысленной, лучше использовать dir с сортировкой, например по имени.

    Всего записей: 218 | Зарегистр. 08-11-2015 | Отправлено: 21:47 19-06-2016 | Исправлено: nik4z, 21:49 19-06-2016
    YuS_two



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

    Цитата:
    одинаковые названия файлов

    Хмм, тогда вопрос, опять же из любопытства: а расширения у них какие?
     
    nik4z

    Цитата:
    Примерно как-то так  

    Точно! Вот ведь... есть же более простой вариант, а то тут шарики за ролики заехали из-за ненужных усложнений. Спасибо, за пинок в нужную сторону.
    Только, требуется разделение на столбцы по папкам (это я уже стелепатировал), но это уже детали, которые решаются просто.

    Код:
    @echo off
    for %%j in (b,u,d,l,r,f,ud,ul,ur,uf,du,dl,dr,df,lu,ld,lr,lf,ru,rd,rl,rf,fu,fd,fl,fr,udl,udr,udf,uld,ulr,ulf,urd,url,urf,ufd,ufl,ufr,dul,dur,duf,dlu,dlr,dlf,dru,drl,drf,dfu,dfl,dfr,lud,lur,luf,ldu,ldr,ldf,lru,lrd,lrf,lfu,lfd,lfr,rud,rul,ruf,rdu,rdl,rdf,rlu,rld,rlf,rfu,rfd,rfl,fud,ful,fur,fdu,fdl,fdr,flu,fld,flr,fru,frd,frl,udlr,udlf,udrl,udrf,udfl,udfr,uldr,uldf,ulrd,ulrf,ulfd,ulfr,urdl,urdf,urld,urlf,urfd,urfl,ufdl,ufdr,ufld,uflr,ufrd,ufrl,dulr,dulf,durl,durf,dufl,dufr,dlur,dluf,dlru,dlrf,dlfu,dlfr,drul,druf,drlu,drlf,drfu,drfl,dful,dfur,dflu,dflr,dfru,dfrl,ludr,ludf,lurd,lurf,lufd,lufr,ldur,lduf,ldru,ldrf,ldfu,ldfr,lrud,lruf,lrdu,lrdf,lrfu,lrfd,lfud,lfur,lfdu,lfdr,lfru,lfrd,rudl,rudf,ruld,rulf,rufd,rufl,rdul,rduf,rdlu,rdlf,rdfu,rdfl,rlud,rluf,rldu,rldf,rlfu,rlfd,rfud,rful,rfdu,rfdl,rflu,rfld,fudl,fudr,fuld,fulr,furd,furl,fdul,fdur,fdlu,fdlr,fdru,fdrl,flud,flur,fldu,fldr,flru,flrd,frud,frul,frdu,frdl,frlu,frld) do (
      if exist "%%j\*.*" (
        for %%i in (%%j\*) do (
            echo %%~zi;>>%%j.csv
        )
      )
    )

    Столбцы с размерами файлов получили. Остаётся ручное склеивание их в один лист в Excel - думаю, это не проблема.
     
    Хотя, стоп... читаю дальше и опять ничего не понимаю...
     
    lorents

    Цитата:
    строки отображают информацию о файле, столбец - размер этого файла.

    Смотрите, опять не всё понятно:  
    1. В строке будет 8185 столбцов - правильно? Исходя из того, что в каждой папке столько файлов. Но ранее Вы писали, что столбцов должно быть 206, по количеству папок... где истина?
    2. Что за информация о файле? Откуда она возьмется, если в csv нет даже ни имени,ни расширения файла... требуются подробности.  
    3. Нарисуйте таблицу, которую вы хотите получить и что же там всё таки подсчитываете - это тоже важно.  
    Просто подсчет средних, минимальных, максимальных значений размеров файлов в powershell делаются одной функцией, за один раз,  
    поэтому может и Excel не нужен вовсе...
     
    В общем, опишите весь процесс в целом, если не секрет конечно, а потом уже будем думать об алгоритмах...  
    А то, как-то непродуктивно получается, мы тут решаем, ломаем голову, а вводные постепенно меняются... так не пойдет.

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 07:00 20-06-2016 | Исправлено: YuS_two, 08:16 20-06-2016
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_two
    Понял Вас. Попробую объяснить по другому.
    у меня есть папка, тем находится 206 папок, в каждой папке 8185 файлов (название файлов и расширения одинаковые, отличие только в размере файла). Мне нужно построить таблице, состоящую из 8185 строк и 206 папок, в каждой ячейка указать размер файла.
    Суть такая - мне нужно получить таблицу, где я могу посмотреть как меняется размер каждого файла.
     
    Посмотрите на данный пример

    Код:
    @echo off
     
    for %%i in (x\*) do call :s1 "b\%%~nxi" "u\%%~nxi" "d\%%~nxi" "l\%%~nxi" "r\%%~nxi" "f\%%~nxi"
     
    :s1
    shift
    echo %~z0;%~z1;%~z2;%~z3;%~z4;%~z5>>1.csv
    exit /b  

     
    Код создает таблицу, и вот такую таблицу я хочу получить, но только не для 6 папок, а 206 папок.
     
    Можно пойти по другому пути:

    Код:
    for %%j in (b,u,d,l,r,f,ud,ul,ur,uf,du,dl,dr,df,lu,ld,lr,lf,ru,rd,rl,rf,fu,fd,fl,fr,udl,udr,udf,uld,ulr,ulf,urd,url,urf,ufd,ufl,ufr,dul,dur,duf,dlu,dlr,dlf,dru,drl,drf,dfu,dfl,dfr,lud,lur,luf,ldu,ldr,ldf,lru,lrd,lrf,lfu,lfd,lfr,rud,rul,ruf,rdu,rdl,rdf,rlu,rld,rlf,rfu,rfd,rfl,fud,ful,fur,fdu,fdl,fdr,flu,fld,flr,fru,frd,frl,udlr,udlf,udrl,udrf,udfl,udfr,uldr,uldf,ulrd,ulrf,ulfd,ulfr,urdl,urdf,urld,urlf,urfd,urfl,ufdl,ufdr,ufld,uflr,ufrd,ufrl,dulr,dulf,durl,durf,dufl,dufr,dlur,dluf,dlru,dlrf,dlfu,dlfr,drul,druf,drlu,drlf,drfu,drfl,dful,dfur,dflu,dflr,dfru,dfrl,ludr,ludf,lurd,lurf,lufd,lufr,ldur,lduf,ldru,ldrf,ldfu,ldfr,lrud,lruf,lrdu,lrdf,lrfu,lrfd,lfud,lfur,lfdu,lfdr,lfru,lfrd,rudl,rudf,ruld,rulf,rufd,rufl,rdul,rduf,rdlu,rdlf,rdfu,rdfl,rlud,rluf,rldu,rldf,rlfu,rlfd,rfud,rful,rfdu,rfdl,rflu,rfld,fudl,fudr,fuld,fulr,furd,furl,fdul,fdur,fdlu,fdlr,fdru,fdrl,flud,flur,fldu,fldr,flru,flrd,frud,frul,frdu,frdl,frlu,frld) do for %%i in (%%j\*) do echo %%~zi>>%%j.txt  

     
    Я получу 206 текстовых файлов. Как мне объединить эти файлы в единую таблицу, где каждый тестовой файл и есть столбец.
     
    Добавлено:

    Цитата:
     1. В строке будет 8185 столбцов - правильно? Исходя из того, что в каждой папке столько файлов. Но ранее Вы писали, что столбцов должно быть 206, по количеству папок... где истина?  

    Наоборот, строк 8185 (по каждому файлу), столбцов 206 (по каждой папке)
     

    Цитата:
     Хмм, тогда вопрос, опять же из любопытства: а расширения у них какие?  

    да одинаковые.

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 10:55 20-06-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