Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
1

Парсер имени файлов со списка, поиск по подкаталогам и запуск искомого файла

01.10.2016, 20:21. Показов 4518. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер уважаемые форумчане.

Нужна ваша помощь в таком вопросе :

По пути L:\avto2\category.txt имею текстовик с таким содержанием :

Lana Rodriges
Brookli Angey
!x!


Нужно спарсить этот список , найти эти файлы по пути L:\Foto2 ( но этот путь имеет подкаталоги L:\Foto2\16.02.2016 , L:\Foto2\18.02.2016 и другие) и запустить их. В исходнике не указаны разширения файлов, но в оригинале они имеют разширение ( jpeg , jpg).

И еще - в исходнике попадаются значение !x! - их учитывать не нужно. Если возможно, то запуск всех файлов производить не все сразу, а через команду pause.

Спасибо всем за помощь в решениии вопроса.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2016, 20:21
Ответы с готовыми решениями:

Поиск файла по подкаталогам
Есть неполный путь к файлу и имя файла.Т.е C:\Program Files\..\file.txt Мне нужно получить доступ...

Поиск файлов по имени и содержимому по ключевым словам из списка file.txt
Парни, нужна помощь. Стоит задача найти файлы, в которых есть фразы (порядка 600 слов) и вывести их...

Поиск xls файлов по имени файла
Подскажите пожалуйста как реализовать программу которое ищет xls файлы, в edit вводим имя файла...

Поиск файлов на диске по имени файла
Необходимо составить программу поиска файлов на диске по имени файла, которое вводится в Edit. ...

21
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
01.10.2016, 21:05 2
Myrena_fox,
Что за...
В любой графической программе слайд-шоу и вперед, куда только не придумают batники засовывать.

Добавлено через 2 минуты
Все-равно надо выбрать какие файлы файлы просматривать, какая разница, в переменные их пихать или загнать нужные в папку, одинаково по скорости, зато удобнее в последствии.
1
724 / 323 / 133
Регистрация: 17.03.2014
Сообщений: 811
01.10.2016, 21:14 3
Myrena_fox, для win7+ примерно так:
Windows Batch file
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
@echo off
                :: По пути L:\avto2\category.txt имею текстовик
set "list=L:\avto2\category.txt"
                :: найти эти файлы по пути L:\Foto2
set "source=L:\Foto2"
                :: список файлов, соответсвующий постановке задачи
set "_tmplist=%temp%\files.lst"
                :: /r "%source%" --> (но этот путь имеет подкаталоги
                ::  L:\Foto2\16.02.2016 , L:\Foto2\18.02.2016 и другие)
>"%_tmplist%" where /r "%source%" /f *.jpeg *.jpg
 
for /f "tokens=*" %%v in (%list%) do (
                rem в исходнике попадаются значение !x! 
                rem их учитывать не нужно.
  if NOT -%%v- == -!x!- (
    for /f "tokens=*" %%f in ('type "%_tmplist%"^|find /i "%%v"') do (
                rem Если возможно, то запуск всех файлов
                rem производить не все сразу,
                rem а через команду pause.
      start "%%v" /w %%f
      pause
    )
  )
)
>nul 2>nul del "%_tmplist%"
exit /b 0
1
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
01.10.2016, 21:37  [ТС] 4
Спасибо и за такой ответ. Пользуюсь и такими прогами, но если можно упростить себе ручную работу , то почему это не сделать. Если вам не нравится задача, можете не тратить свое время и не писать свое мнение. Спасибо.

Добавлено через 10 минут
почему-то скрипт выдает ошибку - не удалось найти "*jpeg" Не могу понять почему...
0
724 / 323 / 133
Регистрация: 17.03.2014
Сообщений: 811
01.10.2016, 21:39 5
Цитата Сообщение от Myrena_fox Посмотреть сообщение
не удалось найти "*jpeg"
именно "*jpeg"? без точки?
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
01.10.2016, 21:44  [ТС] 6
сори пропустил - "*.jpeg"
0
724 / 323 / 133
Регистрация: 17.03.2014
Сообщений: 811
01.10.2016, 21:54 7
Цитата Сообщение от Myrena_fox Посмотреть сообщение
почему-то скрипт выдает ошибку - не удалось найти "*jpeg"
однако ((
предлагаю инфо публиковать НЕ своими словами, а именно так, как на экране:
ИНФОРМАЦИЯ: не удалось найти "*.jpeg"
где вы ошибку обнаружили? всего лишь предупреждение, что файлов с расширением *.jpeg нет
Цитата Сообщение от постановка задачи
но в оригинале они имеют разширение ( jpeg , jpg).
зы. чтобы избавиться от этого сообщения, 10-ю строку запишите так:
Windows Batch file
10
2>nul >"%_tmplist%" where /r "%source%" /f *.jpeg *.jpg
1
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
01.10.2016, 22:06  [ТС] 8
Все сделал как Вы описали - предупреждение сталось. В списке есть название - Terminator , по пути L:\Foto2\Film есть фото с именем Terminator.jpg , но скрипт не открывает фото. Что я сделал не так ?
0
Любознательный
5670 / 1685 / 314
Регистрация: 10.03.2016
Сообщений: 3,833
02.10.2016, 11:17 9
Цитата Сообщение от Myrena_fox Посмотреть сообщение
Нужно спарсить этот список
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
rem Каталог для рекурсивного поиска:
set "d=L:\Foto2"
rem Файл со списком для обработки:
set "list=L:\avto2\category.txt"
 
if not exist "%d%" (echo Error. Not exist folder "%d%"&pause&exit)
 
setlocal enabledelayedexpansion
pushd "!d!"
for /f "delims=" %%a in ('dir /b/s/a-d "*.jpg" "*.jpeg"') do (
    setlocal disabledelayedexpansion
    set "f=%%~a"
    setlocal enabledelayedexpansion
    for /f "delims=" %%i in ('type "!list!"^|findstr /vc:"^!x^!"') do (
        if "%%~na"=="%%i" (!f!&pause)
    )
)
popd
endlocal
1
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 11:31  [ТС] 10
Достигнут уровень рекурсии, максимально возможный для команды SETLOCAL . Не удается найти указанный файл
0
Любознательный
5670 / 1685 / 314
Регистрация: 10.03.2016
Сообщений: 3,833
02.10.2016, 11:52 11
Цитата Сообщение от Myrena_fox Посмотреть сообщение
Не удается найти указанный файл
Кодировка файла-списка?
По рекурсии - будем разбираться...
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 12:08  [ТС] 12
кодировка - UTF -8
0
Любознательный
5670 / 1685 / 314
Регистрация: 10.03.2016
Сообщений: 3,833
02.10.2016, 12:46 13
Цитата Сообщение от YuS_2 Посмотреть сообщение
По рекурсии
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
rem Каталог для рекурсивного поиска:
set "d=L:\Foto2"
rem Файл со списком для обработки:
set "list=L:\avto2\category.txt"
 
if not exist "%d%" (echo Error. Not exist folder "%d%"&pause&exit)
 
pushd "%d%"
for /f "delims=" %%a in ('dir /b/s/a-d "*.jpg" "*.jpeg"') do (
    set "f=%%~a"
    setlocal enabledelayedexpansion
    for /f "delims=" %%i in ('type "!list!"^|findstr /vc:"^!x^!"') do (
        if "%%~na"=="%%i" (!f!&pause)
    )
    endlocal
 
)
popd
pause&exit /b
Цитата Сообщение от Myrena_fox Посмотреть сообщение
кодировка - UTF -8
Прикрепите файл сюда - посмотрим, что там записано. В принципе, "файл не найден" - может быть только в том случае, когда нет совсем ни одного *.jpg и *.jpeg
Но, всё же, лучше и сценарий, и файл список сохранить в кодировке 866.
0
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
02.10.2016, 12:50 14
Windows Batch file
1
findstr /r /c:".*\.jpg$" /c:".*\.jpeg$" "category.txt"
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 13:03  [ТС] 15
файлик для парсинга
Вложения
Тип файла: txt category.txt (54 байт, 5 просмотров)
0
Любознательный
5670 / 1685 / 314
Регистрация: 10.03.2016
Сообщений: 3,833
02.10.2016, 13:20 16
Цитата Сообщение от Myrena_fox Посмотреть сообщение
файлик для парсинга
А если так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
rem Каталог для рекурсивного поиска:
set "d=L:\Foto2"
rem Файл со списком для обработки:
set "list=L:\avto2\category.txt"
 
if not exist "%d%" (echo Error. Not exist folder "%d%"&pause&exit)
if not exist "%list%" (echo Укажите правильно путь к файлу-списку&pause&exit)
 
pushd "%d%"
for /f "delims=" %%a in ('dir /b/s/a-d "*.jpg" "*.jpeg"') do (
    set "f=%%~a"
    setlocal enabledelayedexpansion
    for /f "delims=" %%i in ('type "!list!"^|findstr /vc:"^!x^!"') do (
        if "%%~na"=="%%i" (!f!&pause)
    )
    endlocal
)
popd
pause&exit /b
?

ЗЫ И сохраните файл в 866, во избежание неожиданного отсутствия файлов с именами начинающимися на символ:
\xFEFF
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 13:34  [ТС] 17
скрипт заработал, но не может открыть фото

вывод изображения на печать невозможен, если не используются новые возможности рабочего стола.
0
Любознательный
5670 / 1685 / 314
Регистрация: 10.03.2016
Сообщений: 3,833
02.10.2016, 14:12 18
Цитата Сообщение от Myrena_fox Посмотреть сообщение
но не может открыть фото
А фото открывает не скрипт, а система... у Вас видимо, Win10?
в командной строке:
Windows Batch file
1
photo.jpg
- открывается?
Если нет, то копать нужно систему. Или изменить в сценарии строку 15 с запуском конкретной программы просмотра фотографий, примерно так:
Windows Batch file
1
        if "%%~na"=="%%i" ("Программа_просмотра_фотографий.exe" "!f!"&pause)
а конкретнее, вот эту часть:
Windows Batch file
1
"Программа_просмотра_фотографий.exe" "!f!"
только по синтаксису проверьте в командной строке, чтобы всё запускалось на конкретных файлах, вместо переменной "!f!" и потом уже добавляйте в сценарий, с соответствующей корректировкой.
1
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 15:27  [ТС] 19
СПАСИБО!!! скрипт работает отлично, но есть маленькая проблемка - все фото открывает, если в исходнике первая строчка пустая. Если ее нет, то открывается только одна фотка из списка ( последняя)
Вложения
Тип файла: txt category.txt (56 байт, 4 просмотров)
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 15:37  [ТС] 20
вернее он не учитывает первую строчку в исходнике
0
02.10.2016, 15:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2016, 15:37
Помогаю со студенческими работами здесь

Поиск по подкаталогам
Здравствуйте,не буду писать суть всего задания. У меня есть проход по всем файлам введёного...

Поиск файлов по части имени \ имени
var SR: TSearchRec; Folder: String; begin Folder := 'D:\'; Folder :=...

Запуск bat-файла из vbs-файла от имени указанного пользователя
Здравствуйте форумчане, натолкните пожалуйста как можно реализовать выполнение bat файла такого...

Сортировка списка файлов по времени, по имени
Здравствуйте! есть папка с файлами: Файлы - это массивы снимаемые с прибора (потом дальше...

Сортировка списка файлов по имени, дате и размеру
задан список файлов в папке, для каждого из которых указаны имя, расширение, размер, дата....

Сортировка списка файлов по расширение, затем по имени
у меня вот такая задачка: нужно рассортировать массив, который состоит из названия файлов. Сначала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru