2010-11-29 2 views
1

Во время последнего цикла резервного копирования/восстановления я понял, что мне удалось опустить каталоги tmp из каталогов .svn, и из-за этого я не могу обновить свои рабочие копии. Проблема уходит, если я вручную создаю новую пустую директорию «tmp», поэтому я ищу способ рекурсивно пройти через каждую папку, найти «.svn» и создать внутри нее папку «tmp».Рекурсивно создавать папку в определенных каталогах

Как я не хочу испортить существующие папки я думал, спросим за помощью, прежде чем я сделал что-то глупое :)

Комментарии/предложения будут оценены, спасибо!

PS: Это на компьютере с Windows так грустно, что Bash и другие утилиты unix отсутствуют.

ответ

1

Зависит от того, сколько их есть.

Список каталогов с

dir/B/S .svn >dirs.bat 

Edit dirs.bat в редакторе выбора. Добавьте md в начале каждой строки (так как каждая строка начинается с чего-то вроде C: вы можете использовать довольно немой редактор, включая блокнот, для изменения C: до md C:). Добавьте/tmp в конец каждой строки (замените .svn на .svn\tmp). Сохранить. Запуск файла BAT

Работа выполнена.

+0

Привет, Пол, спасибо за ваше предложение. Он отлично работает, если путь к папке не содержит пробелов, сбой (и случайным образом начинается создание папок в том же каталоге, в котором я запускаю командный файл, что странно), если есть пробелы. Я попытался включить путь в «s», но это не помогло. Любые идеи? Cheers. – Hamza 2010-11-29 17:19:35

+0

поместите каталоги в кавычки, когда вы замените свой текст. – 2010-11-29 18:00:06

0

Вот как автоматизировать весь процесс. Вставьте следующий файл как fixtmp.cmd:

@echo off 
for /f "usebackq delims=" %%I in (`dir /b /s .svn`) do (
echo Fixing %%I... 
mkdir "%%I\tmp" 
) 
2

Сценарий выше не работает на моем на Windows 7 машине. «dir /b /s .svn» не получает все файлы, я получаю сообщение «« Файл не найден ».

Я изменил сценарий, чтобы иметь/объявление в дополнение к выбору каталогов, и это работает! Вот скрипт, который работает для меня.

@echo off 
for /f "usebackq delims=" %%I in (`dir /ad /b /s .svn`) do (
echo Fixing %%I... 
mkdir "%%I\tmp" 
) 
Смежные вопросы