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