Wie kann ich alle versteckten Verzeichnisse unter dem aktuellen Verzeichnis in DOS umbenennen? Ich habe gerade Tortoise SVN aktualisiert, um _svn anstelle von .svn zu verwenden. Mir ist aufgefallen, dass es immer noch funktioniert, wenn ich nur die Ordner umbenenne.Wie kann ich alle versteckten Verzeichnisse unter dem aktuellen Verzeichnis in DOS umbenennen?
Antwort
Die folgende Batchdatei den Trick, zumindest unter Windows, die ich hoffe, Sie verwenden (kein Glück in DOS hier):
@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
Das Problem ist, dass ren
verweigert versteckte Verzeichnisse umbenennen. Und for /R
scheint nie wirklich funktioniert, wenn Sie versuchen, Verzeichnisse zu finden. Also baue ich hier eine kleine Rekursion durch den Verzeichnisbaum und lösche für jedes Verzeichnis, das ich eintrage, das versteckte Flag aus dem Ordner .svn
, benenne es um und verstecke die Datei erneut.
Aufgrund der Neueinstellung der versteckten Flagge und for /D
nie wieder versteckte Verzeichnisse dies hat auch den schönen Vorteil, nicht versucht, die .svn
oder _svn
Verzeichnisse eingeben.
Dies funktionierte besser für mich, da ich eine große Anzahl von Verzeichnissen hatte und Rekursen fehlgeschlagen ist.
FOR /R %%f IN (_svn) DO IF EXIST "%%f" (
ATTRIB -h "%%f"
RENAME "%%f" .svn
ATTRIB +h "%%f"
)