Как пропустить каталоги .svn и включенные файлы в сценарии Windows cmd?

В настоящее время я переименовываю свои файлы Subversion на ПК с Windows, чтобы разрешить конфликты умлаутов, из-за которых Subversion на macOS использует другую визуализацию умлаутов.

Но мой текущий скрипт .cmd не пропускает каталог и файлы .svn, что делает скрипт довольно медленным, поскольку каталог .svn содержит очень много файлов. Я уже пытался установить для атрибутов каталога .svn значение «Скрытый» и «Системный», но сценарий, похоже, игнорирует это, хотя я использую команду dir с параметрами /A:-H и /A:-S. Что я делаю не так?

@echo off 
setlocal enabledelayedexpansion
chcp 1252

for /f "delims=" %%i in ('dir /s /b /a-d-h /A:-H /A:-S C:\Users\Me\Desktop\MyRepository\*.*') do ( 
  set string=%%~nxi
  set stringnew=%%~nxi

  set stringnew=!stringnew:ä=ae!
  set stringnew=!stringnew:ö=oe!
  set stringnew=!stringnew:ü=ue!
  set stringnew=!stringnew:Ä=Ae!
  set stringnew=!stringnew:Ö=Oe!
  set stringnew=!stringnew:Ü=Ue!
  set stringnew=!stringnew:ß=ss!

  if !string! NEQ !stringnew! (
    echo %%~fi
    rename "%%~fi" "!stringnew!"
  ) 
)

Заранее спасибо.


person UlfDunkel    schedule 11.03.2019    source источник
comment
Возможно, просто проверьте эти ответы, как исключить каталоги из команды dir: stackoverflow.com/q/24127017/7225096 stackoverflow.com/q/15568541/7225096   -  person Peska    schedule 11.03.2019
comment
Спасибо за этот намек, но кажется, что добавить что-то вроде | findstr /v \.svn\ не работает в моем цикле for(). Я понятия не имею, почему бы и нет.   -  person UlfDunkel    schedule 11.03.2019
comment
Попробуйте это в своем цикле for: for /f "delims=" %%i in ('dir /s /b C:\Users\Me\Desktop\MyRepository\ ^| findstr /v /c:".svn"') do (   -  person Peska    schedule 11.03.2019
comment
Отлично, Песка, это работает как шарм. Я твой должник. :-)   -  person UlfDunkel    schedule 13.03.2019