[identity profile] creta.livejournal.com posting in [community profile] useful_faq
Дано - папка с большим кол-вом XML файлов.
Нужно каким-то образом получить весь список названий этих файлов и вставить в эксель. У меня получается только по одному названию перетаскивать. А как выделить названия всех файлов сразу?
И еще нужно, открывая эту папку, искать в файлах определенную инфу. Как это сделать? Если я cntr+F делаю, то поиск у меня запускается почему-то только по названиям файла. А нужная мне инфа - она не в названии файла, она в нем самом.
Помогите, please!

Date: 2014-08-29 04:34 am (UTC)
From: [identity profile] wisest-owl.livejournal.com
На моем компьютере сработает следующее:

Поиск:
$ grep "инфа" -r папка_с_xml

Список названий:
$ ls -1

результат копировать через выделение мышкой и вставлять в Excel

Date: 2014-08-29 04:52 am (UTC)
From: [identity profile] wisest-owl.livejournal.com
Ну Вы так сразу говорите, что у Вас винда. Там ниже 'dir' для винды посоветовали.

А искать в файлах под виндой могу посоветовать использовать какой-нибудь "коммандер". Не знаю, какие из них еще живы. (Total commander, Far, NC, etc)
Edited Date: 2014-08-29 04:56 am (UTC)

Date: 2014-08-29 07:41 am (UTC)
From: [identity profile] sakura-al-rim.livejournal.com
Я юзаю Double Commander, опенсорсный аналог Тотала. И под виндой. и под линухом)))

Date: 2014-08-29 04:37 am (UTC)
From: [identity profile] posthaster.livejournal.com
1. dir /b >filelist.txt
Открыть блокнтом. Скопировать. Вставить в Excel.

Date: 2014-08-29 07:09 am (UTC)
From: [identity profile] alex-djk1.livejournal.com
dir /b | clip
И уже все сразу в буфере обмена.

Date: 2014-08-29 07:31 am (UTC)
From: [identity profile] xytop.livejournal.com
вау! круто

Date: 2014-08-29 09:55 am (UTC)
From: [identity profile] alex-djk1.livejournal.com
Сам это узнал только месяц назад.

Date: 2014-08-29 04:37 am (UTC)
From: [identity profile] robinbobin.livejournal.com
dir /b *.xml >all.csv

grep

Date: 2014-08-29 10:13 am (UTC)

Date: 2014-08-29 04:43 am (UTC)
From: [identity profile] qyix7z.livejournal.com
Вот тут (http://myfreeware.narod.ru/products/Path2Clipboard.htm) лежит прога, которая помещает в буфер обмена названия, пути, полные пути и прочая одного или нескольких выделенных файлов (по правой кнопке в проводнике)

Но лучше скажите конечную цель в экселе.
Это можно там сделать макросом: перебрать все файлы (или не все, а по маске) в папке, открыть каждый из файлов, найти в них определенный текст.

А по ctrl+F можно искать и внутри файла средствами винды, надо только галку соответствующую поставить.

Date: 2014-08-29 05:07 am (UTC)
From: [identity profile] qyix7z.livejournal.com
А вот макрос для эксель:
Sub blabla()
i=1
fMask = "C:\путь\" & "*.xml"
fName = Dir(fMask)
Do While fName <> ""
Cells(i,1)=fName ' пишем в ячейку имя файла
iText = FileToTxt("C:\путь\" & fName )

If InStr(1, iText , "искомый текст в файле", 1) > 0 Then
' тут что-то делаем, если нашли, например пишем в соседнюю ячейку:
Cells(i,2)="нашли!"
end if
fName = Dir
i=i+1
Loop
End Sub


Function FileToTxt(iLog) ' считываем файл в текстовую переменную
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
If .FileExists(iLog) = True Then
With .OpenTextFile(iLog)
FileToTxt = .ReadAll: .Close
End With
End If
End With
On Error GoTo 0
End Function
Edited Date: 2014-08-29 05:08 am (UTC)

Date: 2014-08-29 05:49 am (UTC)
From: [identity profile] f2065.livejournal.com
Упомянутая прога только в 32 битной винде работает.
А если 8 стоит 64 битная - то облом.

Современный аналог для любой винды - http://f2065.narod.ru/soft/CopyFileName_ru.htm

Date: 2014-08-29 05:55 am (UTC)
From: [identity profile] qyix7z.livejournal.com
Спасибо Вам добрый человек!
У меня пока везде 32-битные версии, но возьму на заметку.

Еще я не увидел в ней копирование сетевых путей. Это реализовано?

Date: 2014-08-29 05:58 am (UTC)
From: [identity profile] f2065.livejournal.com
Пока нет, но в будущем возможно.

Date: 2014-08-29 04:53 am (UTC)
From: [identity profile] agordian.livejournal.com
1. список файлов xml под windows. Запускать из командной строки в каталоге, где лежат xml

dir *.xml /B /N /ON > c:\temp\xmllst.csv

Вместо c:\temp... указывайте любой путь, куда разрешена запись, либо запускайте от имени администратора. Потом двойной клик по полученному файлу - и вуаля, автоматом список в экселе.

2. Список только файлов, содержащих строку "ааааа". Тоже из командной строки. Тоже в каталоге с xml

find "aaaaa" *.xml > c:\temp\xmllst1.csv

Потом в Экселе вычистите строки с лишней информацией.

Date: 2014-08-29 04:58 am (UTC)
From: [identity profile] phoenix-88.livejournal.com
Если перечисленные выше методы покажутся неудобными, есть смысл попробовать Total Commander: http://samlab.ws/soft/tcpp (скачивайте "установочная x86/x64 версия")
Он умеет всё, что вам нужно, и намного, намного больше. И очень удобен в использовании :)

Date: 2014-08-30 09:28 am (UTC)
From: [identity profile] phoenix-88.livejournal.com
А нельзя ли организовать доступ к папке со своего компьютера? Если нельзя, то можно ограничиться портабельной версией (не требующей установки), доступна там же.

Date: 2014-08-29 05:01 am (UTC)
ext_1775189: Bezenchuk (Bezenchuk)
From: [identity profile] spelller.livejournal.com
Простите, а сколько дней назад вы в первый раз увидели компьютер?

Date: 2014-08-29 05:14 am (UTC)
From: [identity profile] qyix7z.livejournal.com
Как эта информация поможет Вам лучше ответить на вопросы ТС?

Date: 2014-08-29 05:26 am (UTC)
ext_1775189: Bezenchuk (Bezenchuk)
From: [identity profile] spelller.livejournal.com
Например - поможет мне выбрать правильную (согласно уровню компьютерной грамотности ТС) терминологию.
А вообще, я просто поинтересовался. Нельзя?

Date: 2014-08-29 05:29 am (UTC)
From: [identity profile] qyix7z.livejournal.com
Уровень и так виден по вопросам. Неужели Вы думаете, что если ТС увидела комп в первый раз 20 лет назад, то уровень сам по себе существенно выше, чем 20 дней назад? Это как со стажем в правах, можно иметь любой стаж, но не факт, что ездил вообще.

Date: 2014-08-29 05:39 am (UTC)
ext_1775189: Bezenchuk (Bezenchuk)
From: [identity profile] spelller.livejournal.com
Ну не ставить же смайлики после каждого слова...

Date: 2014-08-29 05:39 am (UTC)
From: [identity profile] qyix7z.livejournal.com
Здесь я с Вами абсолютно согласен.

Date: 2014-08-29 04:29 pm (UTC)
ext_1775189: Bezenchuk (Bezenchuk)
From: [identity profile] spelller.livejournal.com
Мне иногда приходится собеседовать претендентов на работу в нашей компании. Иногда от их уровня компьютерной дремучести не знаешь, то ли плакать, то ли смеяться. Сплошной фейспалм. Это при том, что они, в общем-то, в департамент ИТ крупного банка пытаются устроиться. И все бы еще ничего, но что больше всего злит - у всех в резюме написано: advanced PC user. Как минимум.

Date: 2014-08-30 09:13 am (UTC)
ext_1775189: Bezenchuk (Bezenchuk)
From: [identity profile] spelller.livejournal.com
Эм. Команду dir не знает? Командную строку не знает? Меня трудно чем-то удивить, но вам, по видимому, это удалось ;)

Date: 2014-08-29 05:08 am (UTC)
From: [identity profile] site php (from livejournal.com)
Я бы программу написал и не выносил себе мозг с этой виндой...

Date: 2014-08-29 05:11 am (UTC)
ext_1775189: Bezenchuk (Bezenchuk)
From: [identity profile] spelller.livejournal.com
Зачем программу? Пишите уж сразу операционку, чтоб не выносить себе мозг виндою.

Date: 2014-08-29 05:31 am (UTC)
From: [identity profile] site php (from livejournal.com)
Точно

Date: 2014-08-29 07:12 am (UTC)
From: [identity profile] alex-djk1.livejournal.com
Зачем операционку - сразу новый комп со всей обвязкой! А то навыдумывали своих интелов, пройти уже некуда больше.

Date: 2014-08-29 08:41 am (UTC)
ext_1775189: Bezenchuk (Bezenchuk)
From: [identity profile] spelller.livejournal.com
Не, ну это уж черезчур )

Date: 2014-08-29 07:11 am (UTC)
From: [identity profile] alex-djk1.livejournal.com
Из папки с файлами запустить
dir /b | clip
Скопировать из буфера в ексель.

Инфа - любая строка и любое вхождение? Или надо управлять хмл-ем?
Первое - греп, финд, всякие поиски от тотал командера, фара и прочих проводников, тысячи их.
Второе - искать программы, которые умеют манипулировать хмл-ем, либо vba (достаточно просто).

Судя по всему, в компах вы не сильно сечете. Первая команда - пуск-выполнить-cmd (или поиск-cmd), там набираете cd "папка" (копировать из адресной строки проводника, вставлять по правой кнопке мыши, желательно окружить путь кавычками). Потом набираете команду.
Второе - качаете тотал командер, кнопочками и мышкой переходите куда надо и жмете alt+f7, заполняете нужные поля, жмете найти.
Edited Date: 2014-08-29 07:14 am (UTC)

Date: 2014-08-29 07:43 am (UTC)
From: [identity profile] shogun-kub.livejournal.com
Чтоб два раза не вставать - а в VBA есть DOM-парсер XML? Почитал коментарии, узнал некоторые новые вещи для себя, вдруг пригодится в будущем...
Извините, уже погуглил, вопрос снят :)
Edited Date: 2014-08-29 07:44 am (UTC)

Date: 2014-08-29 09:54 am (UTC)
From: [identity profile] alex-djk1.livejournal.com
В vba почти ничего нет, но там есть сом, а через него получаем доступ к примеру IXMLDOMDocument (1-4), оно держит диспатч (то есть работает в скриптах), а заодно всякие xpath, xslt и прочее хорошее.

Date: 2014-09-02 05:23 am (UTC)
From: [identity profile] alex-djk1.livejournal.com
Дык не ставьте его. Он (или фар) есть мобайл версии без установки.