Пакет FOR /F и пробел в файле /pathname и использование токена?

Я использую командный файл для обновления только тех файлов, которые изменились в моем репозитории SVN. Это часть моего командного файла:

SET CHANGES=svnlook changed c:\myrepository
FOR /F "usebackq tokens=2" %%a IN (`%CHANGES%`) DO (echo %%a)

Я получаю только dok вместо dok version1.txt, и я думаю, это из-за места. Как я должен изменить код, чтобы получить имя файла, даже если есть пробел? Это из-за жетонов или где это сокращает название?

Вывод svnlook выглядит так:

D Тестпроект / багажник / док - Kopie (2).txt
D Тестпроект / багажник / док - Kopie (3).txt
D Тестпроект / багажник / док - Kopie (4).txt

Поэтому я использую токены =2, чтобы получить только путь (Testprojekt/trunk/dok - Kopie (2).txt), а не действие (D= удалено, например).

Спасибо!

2 ответа

Решение

Попробуйте использовать:

FOR /F "usebackq tokens=1,*" %%a IN (`%CHANGES%`) DO (echo %%b)

Это присваивает первый токен%a, а все последующие - следующей букве, т.е. %b

С этим выводом:

D Testprojekt/trunk/dok - Kopie (2).txt
D Testprojekt/trunk/dok - Kopie (3).txt
D Testprojekt/trunk/dok - Kopie (4).txt

... вы можете попробовать это:

FOR /F "usebackq tokens=1*" %%a IN (`%CHANGES%`) DO (
    echo %%b
)

tokens=1* бит означает:

  1. Сохранить первый токен в %%a (т.е. D)
  2. Сохраните оставшуюся часть строки в %%b
Другие вопросы по тегам