2

如何重命名DOS当前目录下的所有隐藏目录?我刚刚更新了 Tortoise SVN 以使用 _svn 而不是 .svn。我注意到如果我只是重命名文件夹它仍然有效。

4

2 回答 2

11

以下批处理文件可以解决问题,至少在我希望您正在使用的 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 or_svn目录的好处。

于 2009-06-25T05:03:42.927 回答
0

这对我来说效果更好,因为我有大量目录并且递归失败。

FOR /R %%f IN (_svn) DO IF EXIST "%%f" (
    ATTRIB -h "%%f"
    RENAME "%%f" .svn
    ATTRIB +h "%%f"
)
于 2012-02-23T22:54:05.750 回答