Windows batch: Obtém o primeiro nome da pasta começando com algum valor?

2

Eu tenho um arquivo de lote no qual eu passo o nome da pasta que quero usar como argumento. Mas agora eu quero torná-lo um pouco mais inteligente, permitindo que o usuário especifique apenas os primeiros caracteres do nome da pasta que gostaria de passar como argumento.

Por exemplo, quando tenho três pastas na minha pasta atual:

  • FolderOne
  • FolderTwo
  • OutraPasta

Sempre que eu digito "An" como argumento, quero que o arquivo em lote faça um loop pelas pastas da pasta atual e obtenha o nome da primeira pasta que começa com a string especificada. Nesse caso, isso seria "AnotherFolder".

Eu sei como fazer isso em C #, mas sou novo em arquivos em lote. Alguém por favor pode me ajudar com isso? Me desculpe se é uma questão noob, mas eu realmente não consigo fazer funcionar.

Um pequeno contexto para este script: Eu tenho atualmente uma pasta para meus projetos, que contém uma enorme quantidade de pastas que estão sob controle de versão (TortoiseSVN). Para tornar as coisas mais simples para mim, criei um arquivo de lote no qual só preciso digitar svnlog "some folder name" para mostrar o log do SVN desse projeto. O lote atual:

cd C:/Projects/
SET p=C:/Projects/
SET a=%1
SET pa=%p%%a%
TortoiseProc.exe /command:log /path:%pa%
    
por FerdieQO 13.05.2016 / 09:42

1 resposta

2

Tudo bem, eu já percebi isso. Veja o arquivo de lote abaixo.

cd C:/Projects/
SET p=C:/Projects/
SET a=%1
for /D %%x in (%a%*) do if not defined f set "f=%%x"
SET pa=%p%%f%
TortoiseProc.exe /command:log /path:%pa%
    
por 13.05.2016 / 10:19