Моя команда обновления SVN SVN update
Tortoise обычно возвращает мне такой вывод:
C:\proj>svn update
Updating '.':
A 'some-file1.txt'
D 'some-file2.txt'
Restored 'some-file3.txt'
U 'some'file4.txt'
C 'some file5.txt' B
At revision 123.
Обратите внимание, что за исключением первой строки (всегда начинающейся с Updating
) и последней строки (всегда начинающейся с At
), каждая строка всегда будет иметь:
- действие в первом столбце. Это может быть буква или слово
- файл во втором столбце, заключенный в одинарные кавычки. К сожалению, имена файлов могут содержать одинарные кавычки или пробелы внутри них!
- возможно больше столбцов с одиночными буквами в них. Но мне плевать на них.
В командном файле, который я пишу, мне нужны действия и файлы. Действия, которые мне удается получить, но, кажется, файлы слишком сложны для меня. Технически, все, что я хочу, это все между первой одинарной кавычкой и последней одинарной кавычкой в строке.
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('"svn update"') DO (
set line=%%a
for /f "tokens=1" %%b in ("!line!") do (
set action=%%b
if "!action!" neq "Updating" (
if "!action!" neq "At" (
set file= >>> I DON'T KNOW WHAT TO DO HERE <<<
echo We did !action! to !file!
)
)
)
)
Как только этот пакетный файл работает правильно, он должен вывести:
We did A on some-file1.txt
We did D on some-file2.txt
We did Restored on some-file1.txt
We did U on some'file1.txt
We did C on some file1.txt