Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Извлечение информации из множества файлов в один (http://forum.oszone.net/showthread.php?t=311272)

Борис_Спектор@vk 07-02-2016 14:14 2603335

Извлечение информации из множества файлов в один
 
Здравствуйте!
Подскажите пожалуйста. В папке есть множество файлов excel (csv). Мне надо из каждого файла взять всё из столбца (например D) и скопировать в тхт файл. Можно такое реализовать через cmd/bat, без открытия каждого файла?

П.С.: пример файла добавляю
https://drive.google.com/file/d/0B5w...ew?usp=sharing

Foreigner 07-02-2016 14:58 2603350

Нужен пример файла -- заголовок (если есть) и несколько строк. В общем виде, при условии, что разделителем полей служит ";", поле "D", это четвертый столбец и нет пустых полей:
Код:

@echo off
setlocal

for %%i in (*.csv) do (

    for /f "skip=1 tokens=4 delims=;" %%j in ('type "%%i"') do 1>>result.txt echo %%j

)


Iska 07-02-2016 15:01 2603351

Упакуйте образец csv-файла в архив и приложите к сообщению, либо выложите на RGhost.

Общий принцип:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

>"Result.txt" (
        for %%i in (*.csv) do (
                for /f "usebackq tokens=4 delims=," %%j in ("%%~i") do (
                        echo %%j
                )
        )
)

endlocal
exit /b 0


Борис_Спектор@vk 07-02-2016 15:37 2603373

Спасибо за ответы!
Вот ссылка на пример:
https://drive.google.com/file/d/0B5w...ew?usp=sharing

Борис_Спектор@vk 07-02-2016 16:50 2603408

Столбец D это я для примера сказал. Из всех файлов нужен 8-й столбец. Что-то не получается у меня

Foreigner 07-02-2016 17:14 2603418

54Mб. Вы смеетесь? Приведите несколько строк с начала файла.

Борис_Спектор@vk 07-02-2016 19:44 2603455

Я могу сделать меньше. Можете пожалуйста просто подсказать как настроить чтоб брало 8-ой столбец?

Foreigner 07-02-2016 20:38 2603478

Борис_Спектор@vk,
Код:

@echo off
setlocal

for %%i in (*.csv) do (

    for /f "skip=1 tokens=8 delims=;" %%j in ('type "%%i"') do 1>>result.txt echo %%j

)

skip=1 -- нужен если в csv-файле есть строка-заголовок, если нет -- эту запись нужно убрать
tokens=8 -- восьмой столбец
delims=; -- разделить между столбцами ";". Если в файле разделители запятые, измените на запятую

PS. Файл большой, так что его обработка займет время. Надеюсь, что вообще осилит.

Борис_Спектор@vk 07-02-2016 21:12 2603487

Супер! :up Спасибо большое! :)

Iska 07-02-2016 21:43 2603498

Цитата:

Цитата Борис_Спектор@vk
Цитата:

Цитата Foreigner
54Mб. Вы смеетесь? Приведите несколько строк с начала файла. »

Я могу сделать меньше. »

Вы не заметили слова «Упакуйте … в архив»?


Время: 22:03.

Время: 22:03.
© OSzone.net 2001-