#batch-file
#пакетный файл
Вопрос:
я пытаюсь использовать пакетный файл для чтения всех элементов моего .xml-файла, чтобы получить путь к файлу и выполнить их в порядке, подобном списку воспроизведения. вот пример моего файла .xml:
<Sunday>
<id>1</id>
<filePath>\MOVIESERVERmovie1.mkv</filePath>
</Sunday>
<Sunday>
<id>2</id>
<filePath>\MOVIESERVERmovie2.avi</filePath>
</Sunday>
<Sunday>
<id>3</id>
<filePath>\MOVIESERVERmovie3.avi</filePath>
</Sunday>
<Sunday>
<id>4</id>
<filePath>\MOVIESERVERMovie4.avi</filePath>
</Sunday>
</dataroot>
прямо сейчас я использую этот пакетный файл, но он считывает только первый элемент » MOVIESERVER movie1.mkv».
как мне заставить его либо перебирать, либо построчно извлекать пути к файлам по порядку?
@echo off
for /f "tokens=2 delims=<>" %%a in ('type "C:VlcTVVLCPlaylistsProgramsVersion_3.00-Sun.xml" ^|find /i "<filepath>" ') do set "var=%%a"
любые предложения будут с благодарностью приняты 🙂
Ответ №1:
Вы должны активировать отложенное расширение :
@echo off
setlocal enabledelayedexpansion
for /f "tokens=2 delims=<>" %%a in ('type "C:VlcTVVLCPlaylistsProgramsVersion_3.00-Sun.xml" ^|find /i "<filepath>" ') do (
set var="%%a"
echo !var!)
Комментарии:
1. ничего не изменилось, когда я добавил «setlocal enabledelayedexpansion» в пакетный файл. он по-прежнему не считывает каждый путь к файлу по порядку.
2. я действительно заметил, что ошибался в том, что читал только первый элемент, который, как представляется, фактически читает 4-й или последний элемент. и когда я добавил «setlocal enabledelayedexpansion», ничего не изменилось. я ищу способ вывода путей к файлам по порядку. есть ли способ присвоить каждой строке (пути к файлу) отдельную переменную?
3. поиграв с ним еще немного, я вижу, что он считывает все элементы, но он повторяет только последний. есть ли способ повторить каждый элемент (путь к файлу)?
4. Очень странно! Он должен отражать все элементы.