Войти

Показать полную графическую версию : [решено] пройтись по всем подпапкам и запустить опр. команду


nbafree
19-10-2012, 14:01
Нужно создать скрипт который должен в опред. пути пройтись по всем подпапкам и запустить опр. команду.
и записывать результат этой команды в файл.
Т.е отчте можно так сказать.

Iska
19-10-2012, 16:08
Что значит «пройтись»? Какую именно команду? «Результат» — stdout приложения?

vserd
20-10-2012, 01:18
Если кратко:
cmd /k help
Команды: DIR, ECHO,
Операторы: >>, >, 1>>, 2>>

nbafree
20-10-2012, 22:32
Мне нужен цикл.
Вы можете показать пример.
Я синтаксисом CMD не знаком.
Вот цикл на С++ аналог его я хочу написать в CMD.

int счетчик_папок =0; \\Узнать етото счетчик надо из кол-ва подпапок по пути C:\\Myfolder
for(int i=0;i!=cчетчик папок;i++)
{
cout<<i<<endl;
}

Как-так.Спасибо!

Iska
21-10-2012, 01:00
nbafree, понятней не стало. Особливо учитывая то, что Ваш цикл на C++ пуст.

nbafree
21-10-2012, 05:20
Почему пуст?Он выводит на экран значение интовой переменной i.
количество итераций равной счетчику папок.
Тогда так.Есть SVN в папке C:\\repos\ и там много репозиториев.
есть утилита svnlook.exe котроя с пом. команды svnlook info PATH_OF_REPO выводить на экран информацию о репозитории(напрюктопоследний раз коммител и кол-во ревизий)
svnlook info PATH_OF_REPO>info.txt записывает файл нужную инфу.
Вот мне нужно в подпапках где есть много репозиториев (C:\\repos\) вызывать эту команду записывать инфу о каждом из них.

Iska
21-10-2012, 11:51
Почему пуст?Он выводит на экран значение интовой переменной i.
количество итераций равной счетчику папок. »
Уважаемый коллега, не будете ли Вы любезны ещё раз окинуть непредвзятым взглядом приведённый Вами цикл и ответить себе на вопрос: сколько раз он отработает? Ибо, в моём представлении, цикл от нуля до нуля отработает ровно ноль раз. Вопрос риторический.

Тогда так.Есть SVN в папке C:\\repos\ и там много репозиториев.
есть утилита svnlook.exe котроя с пом. команды svnlook info PATH_OF_REPO выводить на экран информацию о репозитории(напрюктопоследний раз коммител и кол-во ревизий)
svnlook info PATH_OF_REPO>info.txt записывает файл нужную инфу.
Вот мне нужно в подпапках где есть много репозиториев (C:\\repos\) вызывать эту команду записывать инфу о каждом из них. »
Правильно ли я понимаю, что нужно получить перечень папок только первого уровня вложенности в «C:\repos» и выполнить для каждой из них указанную/указанные команды?
for /d %%i in ("C:\repos\*.*") do (
echo %%i
svnlook.exe info "%%~i" >"%%~i-info.txt"
)
Или неправильно понимаю?

nbafree
21-10-2012, 14:08
\\Узнать етото счетчик надо из кол-ва подпапок по пути C:\\Myfolder »
Это я вначале ноль установил так для красоты :)
а i должен равнять кол-ву папок.
Извиняюсь за корявое объснение.

Да это то что надо!!!
И можно еще вопрос что означает вот эта запись %~i ?

Iska
21-10-2012, 15:00
И можно еще вопрос что означает вот эта запись %~i ? »
Я не писал пакетный файл, а делал всё непосредственно в командной строке, посему, при написании поста, банально забыл добавить ещё один «%» в последнюю переменную. Должно быть «"%%~i-info.txt"» (я поправил пост (http://forum.oszone.net/post-2009455.html#post2009455) выше).

«%%~i» означает — «Взять значение переменной цикла перебора «i» и удалить из неё, если есть, обрамляющие кавычки».




© OSzone.net 2001-2012