Você pode testar o sublinhado em algum lugar dentro do seu loop FOR.
SET FIRSTCHAR=%%a
SET FIRSTCHAR=!FIRSTCHAR:~0,1!
IF NOT "!FIRSTCHAR!"=="_" (do some stuff)
Este site tem algumas boas dicas sobre manipulação de strings no CMD. link
Eu estou jogando junto um arquivo de lote que ecoa uma lista de todos os diretórios em um caminho específico.
Eu tenho algumas pastas no diretório W:/wamp/www/
que começam com um underscore _
; por exemplo, _templates
.
Gostaria que o resultado excluísse todas as pastas que começam com _
. Eu não preciso desse esforço para ser recursivo.
Meu diretório atual para w:/wamp/www/
é assim:
_system
_templates
_assets
Folder1
Folder2
Folder3
A saída de eco desejada é:
Folder1
Folder2
Folder3
Eu posso obter uma listagem com uma contagem de números usando o seguinte, mas é claro que ela lança todas as pastas de volta para mim. Eu gostaria de receber ajuda. Eu realmente não preciso dos números nesta lista, então, se houver uma abordagem mais elegante, eu ficaria grato pelo insight
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
)
Você pode testar o sublinhado em algum lugar dentro do seu loop FOR.
SET FIRSTCHAR=%%a
SET FIRSTCHAR=!FIRSTCHAR:~0,1!
IF NOT "!FIRSTCHAR!"=="_" (do some stuff)
Este site tem algumas boas dicas sobre manipulação de strings no CMD. link
Se tudo que você precisa é a listagem, o código completo pode ser
dir /a /b /d "w:\wamp\www" | findstr /v /b /c:"_"
Use findstr
para filtrar a lista e recuperar apenas as linhas que não contêm ( /v
) no início da linha ( /b
) um sublinhado
Se este sistema é pelo menos o Windows 7 / Server 2008 R2, então você pode executar o seguinte comando interativamente no Powershell:
Get-ChildItem -Exclude _* -Path w:\wamp\www\ | where{$_.mode -like "d*"} | select name
É aconselhável descartar todo o lote e passar para o Powershell. É o sucessor do cmd (que será obsoleto no futuro) e é muito mais capaz devido à sua orientação a objetos.
O comando recupera tudo no diretório www que não inicia com '_', depois passa apenas os diretórios pelo pipeline para o comando select que retorna o atributo name dos diretórios.
Deixe-me saber se você precisa automatizar isso ou se isso é suficiente.