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

sea*_*ean 2 windows tortoisesvn dos

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

Joe*_*oey 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
Run Code Online (Sandbox Code Playgroud)

问题是ren拒绝重命名隐藏目录.for /R在尝试查找目录时,似乎从未真正起作用.所以我在这里通过目录树构建一个小的递归,对于我输入的每个目录,我清除.svn文件夹中的隐藏标志,重命名它,然后再次隐藏文件.

由于重新设置了隐藏标志并且for /D永远不会返回隐藏目录,因此不会尝试输入.svn_svn目录也有很好的好处.