如何在DOS下重命名当前目录下的所有隐藏目录?

时间:2009-06-25 04:53:24

标签: windows tortoisesvn dos

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

2 个答案:

答案 0 :(得分: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_svn目录也有很好的好处。

答案 1 :(得分:0)

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

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