Как я могу переименовать все скрытые каталоги в текущем каталоге в DOS? - PullRequest
2 голосов
/ 25 июня 2009

Как я могу переименовать все скрытые каталоги в текущем каталоге в DOS? Я только что обновил Tortoise SVN, чтобы использовать _svn вместо .svn. Я заметил, что это все еще работает, если я просто переименую папки.

Ответы [ 2 ]

11 голосов
/ 25 июня 2009

Следующий пакетный файл поможет, по крайней мере, в Windows, которую, я надеюсь, вы используете (не повезло в DOS здесь):

@echo off
call :recurse .
goto :eof

:recurse
for /d %%d in (*) do (
    pushd %%d
    attrib -H .svn >nul 2>&1
    ren .svn _svn >nul 2>&1
    attrib +H _svn >nul 2>&1
    call :recurse
    popd
)
goto :eof

Проблема в том, что ren отказывается переименовывать скрытые каталоги. И for /R, похоже, никогда не работает при поиске каталогов. Поэтому я создаю небольшую рекурсию по дереву каталогов здесь, и для каждого вводимого каталога я удаляю скрытый флаг из папки .svn, переименовываю его и снова скрываю файл.

Из-за повторной установки скрытого флага и for /D никогда не возвращающих скрытых каталогов это также имеет приятное преимущество - не пытаться войти в каталоги .svn или _svn.

0 голосов
/ 24 февраля 2012

Это сработало лучше для меня, так как у меня было огромное количество каталогов, и повторение не удалось.

FOR /R %%f IN (_svn) DO IF EXIST "%%f" (
    ATTRIB -h "%%f"
    RENAME "%%f" .svn
    ATTRIB +h "%%f"
)
...