Як обробляти кілька файлів одночасно?


1

Я повинен використовувати це vera ++ інструмент проти декількох *.cpp і *.h файлів. Я приймаю назву файлу як параметр. Як шукати *.cpp файли та їх надсилання vera++? Це один-лайнер або мені потрібен пакетний сценарій?

Відповіді:


3

Тільки поточна папка:

for %i in (*.cpp *.h) do vera++ "%~i"

Включаючи підпапки:

for /r . %i in (*.cpp *.h) do vera++ "%~i"

/r . означає "початок у поточній папці". Якщо потрібно вказати інше ім'я папки, використовуйте for /r newfolder.


Як це зробити у Windows XP? Не працює.
Jader Dias

@Jader: Як точно це не працює? (Також не приймайте відповіді, не спочатку перевіряючи їх.)
grawity

Вона працює в командному рядку, але коли знаходиться всередині a bat Файл результату ~i" was unexpected at this time (грубий переклад з португальської)
Jader Dias

2
@Jader: При використанні for у пакетному файлі потрібно подвоїти % s - так: for %%i in (*.cpp *.h) do vera++ "%%~i"
grawity

3

Це, звичайно, єдиний лайнер в документації. Ось варіанти:

  • Зробіть те, що в документації говорить. У документації йдеться
    find . -name '*.h' | xargs vera++ -profile my_favourite
    І з відповідним набором інструментів, таким як власний Microsoft завантажуваного інструментарію SFUA що працює на Windows 7 Підсистема для додатків на основі UNIX (що поставляється в коробці з Windows 7 Ultimate Edition і Windows Server 2008 R2 - для Windows XP можна завантажити та встановіть Послуги для UNIX версії 3.5 .) є такі інструменти, як find і xargs для Windows. Є, звичайно, також GNUWin32 , cygwin , і unxutils .
  • Якщо ви використовуєте TC Software / LE можна використовувати вбудований SELECT команду інтерактивно вибирати файли для обробки:
    SELECT vera++ [*]
    Зверніть увагу на квадратні дужки, які змушують об'єднати всі імена файлів в одну команду.
  • Використання ортодоксального файлового менеджера , як от File Commander для Windows або FAR Ви можете подібним чином вибрати файли для інтерактивної обробки та вставити їх у командний рядок відповідним натисканням клавіші.
  • Якщо ви використовуєте TC Software / LE можна використовувати вбудований FOR команду обробляти файли після їх знаходження (скажімо) з DIR команду :
    DIR /B /S *.cpp;*.h|FOR F IN (@CON) do vera++ %F
    або просто обробляти їх безпосередньо FOR має варіант рекурсії:
    FOR /R F IN (*.cpp;*.h) DO vera++ %F
    Це, звичайно, виконує команду один раз для кожного знайденого файлу.
  • Або ви можете робити те, що сказала ityрави.

1
трапляється, що windows xp вже має find.exe (для пошуку рядків усередині файлів), тоді ви повинні вказати, який пошук ви хочете використовувати
Jader Dias
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.