Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
1

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

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

Добрый вечер уважаемые форумчане.

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

По пути 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2016, 20:21
Ответы с готовыми решениями:

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

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

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

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

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

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

Добавлено через 2 минуты
Все-равно надо выбрать какие файлы файлы просматривать, какая разница, в переменные их пихать или загнать нужные в папку, одинаково по скорости, зато удобнее в последствии.
1
b0gus
271 / 170 / 73
Регистрация: 17.03.2014
Сообщений: 493
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
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
01.10.2016, 21:37  [ТС] 4
Спасибо и за такой ответ. Пользуюсь и такими прогами, но если можно упростить себе ручную работу , то почему это не сделать. Если вам не нравится задача, можете не тратить свое время и не писать свое мнение. Спасибо.

Добавлено через 10 минут
почему-то скрипт выдает ошибку - не удалось найти "*jpeg" Не могу понять почему...
0
b0gus
271 / 170 / 73
Регистрация: 17.03.2014
Сообщений: 493
01.10.2016, 21:39 5
Цитата Сообщение от Myrena_fox Посмотреть сообщение
не удалось найти "*jpeg"
именно "*jpeg"? без точки?
0
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
01.10.2016, 21:44  [ТС] 6
сори пропустил - "*.jpeg"
0
b0gus
271 / 170 / 73
Регистрация: 17.03.2014
Сообщений: 493
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
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
01.10.2016, 22:06  [ТС] 8
Все сделал как Вы описали - предупреждение сталось. В списке есть название - Terminator , по пути L:\Foto2\Film есть фото с именем Terminator.jpg , но скрипт не открывает фото. Что я сделал не так ?
0
YuS_2
Любознательный
1086 / 621 / 193
Регистрация: 10.03.2016
Сообщений: 1,437
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
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 11:31  [ТС] 10
Достигнут уровень рекурсии, максимально возможный для команды SETLOCAL . Не удается найти указанный файл
0
YuS_2
Любознательный
1086 / 621 / 193
Регистрация: 10.03.2016
Сообщений: 1,437
02.10.2016, 11:52 11
Цитата Сообщение от Myrena_fox Посмотреть сообщение
Не удается найти указанный файл
Кодировка файла-списка?
По рекурсии - будем разбираться...
0
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 12:08  [ТС] 12
кодировка - UTF -8
0
YuS_2
Любознательный
1086 / 621 / 193
Регистрация: 10.03.2016
Сообщений: 1,437
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
alpap
1884 / 1382 / 455
Регистрация: 26.04.2015
Сообщений: 4,686
02.10.2016, 12:50 14
Windows Batch file
1
findstr /r /c:".*\.jpg$" /c:".*\.jpeg$" "category.txt"
0
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 13:03  [ТС] 15
файлик для парсинга
0
Вложения
Тип файла: txt category.txt (54 байт, 5 просмотров)
YuS_2
Любознательный
1086 / 621 / 193
Регистрация: 10.03.2016
Сообщений: 1,437
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
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 13:34  [ТС] 17
скрипт заработал, но не может открыть фото

вывод изображения на печать невозможен, если не используются новые возможности рабочего стола.
0
YuS_2
Любознательный
1086 / 621 / 193
Регистрация: 10.03.2016
Сообщений: 1,437
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
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 15:27  [ТС] 19
СПАСИБО!!! скрипт работает отлично, но есть маленькая проблемка - все фото открывает, если в исходнике первая строчка пустая. Если ее нет, то открывается только одна фотка из списка ( последняя)
0
Вложения
Тип файла: txt category.txt (56 байт, 4 просмотров)
Myrena_fox
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2016, 15:37  [ТС] 20
вернее он не учитывает первую строчку в исходнике
0
02.10.2016, 15:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2016, 15:37

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru