Пакет 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*
бит означает:
- Сохранить первый токен в %%a (т.е.
D
) - Сохраните оставшуюся часть строки в %%b