пропустить скрытые папки в цикле в Windows bat файле - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь написать командный файл для рекурсивного выполнения блока действий во всех подпапках текущего каталога, но мне нужно пропустить скрытые папки, я начал с этого:

echo off
set back=%cd%

for /r "C:\Temp\" %%i in (.) do (
cd "%%i"

echo 'Current directory:'
echo %%i
dir
cd ..
pause
)
cd %back%

Но я не знаю, как пропустить пустые папки, не могли бы вы мне помочь?

1 Ответ

1 голос
/ 16 апреля 2019

Согласно моему комментарию:

  • используйте dir вместо for /r, который не имеет возможности пропускать скрытые или системные файлы / папки.
  • используйте PushD / PopD для изменения каталога и возврата назад
  • , чтобы пропустить канал папок для поиска / findstr / V

@echo off
for /f "delims=" %%i in ('
  dir /B /S /AD-H-S "C:\temp\" 2^>Nul ^| findstr /V "^\. \\\."
') do (
    PushD "%%i"
    echo 'Current directory:'
    cd
    dir
    PopD
    pause
)

Здесь findstr /V "^\. \\\." использует /V для исключения совпавших строк в режиме RegEx по умолчанию, а

"^\. \\\." соответствует буквальной точке в начале строки или после обратной косой черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...