Я собираю вместе пакетный файл, который выведет список всех каталогов по определенному пути.

У меня есть несколько папок в каталоге W:/wamp/www/ которые начинаются с подчеркивания _ ; например _templates .

Я хотел бы, чтобы результат исключал любые папки, начинающиеся с _ . Мне не нужно это усилие, чтобы быть рекурсивным.

Так что мой текущий каталог для w:/wamp/www/ выглядит так:

  • _system
  • _templates
  • _assets
  • Folder1
  • Folder2
  • Folder3

Требуемый эхо-выход:

  • Folder1
  • Folder2
  • Folder3

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

set acctDir=w:\wamp\www\
set app=setup.exe /cd
set log=w:\wamp\logs\projectlogs.txt


set c=0
For /f %%a in ('dir !acctDir! /B /A /D') do (
    set /a c+=1
    echo     !c!  %%a
    set dir!c!=%%a
    set projectname=%%a
)

3 ответа3

1

Вы можете проверить наличие подчеркивания где-нибудь внутри цикла FOR.

SET FIRSTCHAR=%%a
SET FIRSTCHAR=!FIRSTCHAR:~0,1!
IF NOT "!FIRSTCHAR!"=="_" (do some stuff)

На этом сайте есть несколько полезных советов по работе со строками в CMD. http://www.dostips.com/DtTipsStringManipulation.php

1

Если все, что вам нужно, это список, полный код может быть

dir /a /b /d "w:\wamp\www" | findstr /v /b /c:"_"

Используйте findstr для фильтрации списка и извлечения только строк, которые не содержат (/v) в начале строки (/b) подчеркивание

0

Если эта система по крайней мере Windows 7/Server 2008 R2, то вы можете в интерактивном режиме запустить следующую команду в Powershell:

Get-ChildItem -Exclude _* -Path w:\wamp\www\ | where{$_.mode -like "d*"} | select name

Настоятельно рекомендуется собрать все вместе и перейти на Powershell. Он является преемником cmd (который в будущем будет устаревшим) и более способным из-за ориентации объекта.

Команда извлекает из каталога www все, что не начинается с '_', затем только передает каталоги по конвейеру команде select, которая возвращает атрибут name из каталогов.

Дайте мне знать, если вам нужно автоматизировать это или этого достаточно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .