Plik wsadowy, aby wyświetlić listę katalogów z wyłączeniem katalogów rozpoczynających się znakiem podkreślenia „_”

0

Rzucam razem plik wsadowy, który wyświetli listę wszystkich katalogów w określonej ścieżce.

W W:/wamp/www/katalogu mam kilka folderów, które zaczynają się od podkreślenia _; na przykład _templates.

Chciałbym, aby wynik wykluczył wszystkie foldery zaczynające się od _. Nie potrzebuję tego wysiłku, aby być rekurencyjnym.

Mój aktualny katalog w:/wamp/www/wygląda następująco:

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

Pożądane wyjście echa to:

  • Folder1
  • Folder2
  • Folder3

Mogę uzyskać listę z liczbą, używając następujących, ale oczywiście rzuca mi wszystkie foldery z powrotem. Byłbym wdzięczny za wszelką pomoc. Tak naprawdę nie potrzebuję liczb z tej listy, więc jeśli istnieje bardziej eleganckie podejście, byłbym wdzięczny za wgląd

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
)
Jeffrey S.
źródło
Dlaczego nie oznaczyć ich jako ukryte? Nie wyglądają jak nazwy, które pojawią się i znikną dynamicznie. Wystarczy wpisać attrib +h w:/wamp/www/_*, a pliki zostaną wykluczone z list katalogów.
AFH
reż nie ma opcji wykluczenia, ale jest to odpowiednie stackoverflow.com/questions/15714363/...
barlop

Odpowiedzi:

1

Możesz przetestować podkreślenie gdzieś w pętli FOR.

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

Ta strona zawiera kilka dobrych wskazówek na temat manipulacji ciągami w CMD. http://www.dostips.com/DtTipsStringManipulation.php

GuitarPicker
źródło
1

Jeśli wszystko, czego potrzebujesz, to lista, pełny kod może być

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

Służy findstrdo filtrowania listy i pobierania tylko linii, które nie zawierają ( /v) na początku linii ( /b) podkreślenia

MC ND
źródło
0

Jeśli ten system to co najmniej Windows 7 / Server 2008 R2, możesz uruchomić następujące polecenie interaktywnie w programie Powershell:

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

Naprawdę zaleca się zebranie partii razem i przejście do PowerShell. Jest następcą cmd (który będzie przestarzały w przyszłości) i jest znacznie bardziej wydajny ze względu na orientację obiektową.

Polecenie pobiera wszystko z katalogu www, które nie zaczyna się od „_”, a następnie przekazuje katalogi w potoku do polecenia select, które zwraca atrybut nazwy katalogów.

Daj mi znać, jeśli chcesz to zautomatyzować lub jeśli to wystarczy.

megamorf
źródło