Analise a sequência retornada em uma matriz e, em seguida, faça um loop através dela, até determinar a sequência que você procura.
Ramhound
Respostas:
0
Não há um comando de linha única que fará isso, mas eu incorporei os requisitos no seguinte código de lote: -
@echo off
setlocal enabledelayedexpansion
set P=%PATH%
:Loop
for /f "delims=; tokens=1*" %%f in ("!P!") do (
if exist "%%f"\*.* ( echo "%%f": valid ) else ( echo "%%f": not a directory )
set P=%%g
if not "%%g" == "" goto Loop
)
Procurei maneiras de evitar isso goto, mas no final era mais simples usá-lo.
O forcomando se divide %P%em %%fe %%gno primeiro ;.
Observe o requisito para expansão atrasada, para que Pele seja expandido com seu valor atual em cada passagem do loop.
Isso não funcionará se houver espaços em branco incorporados ou certos outros caracteres (por exemplo (, )) em qualquer um dos caminhos. Além disso, qual é o existcomando? O único uso padrão de existin cmdé uma cláusula no ifcomando, por exemplo if exist "%%f"\*.* (echo %%f is a directory) else echo %%f is not a directory, que mostrará um erro se o caminho não existir, ou se for um arquivo, e não um diretório.
Respostas:
Não há um comando de linha única que fará isso, mas eu incorporei os requisitos no seguinte código de lote: -
Procurei maneiras de evitar isso
goto
, mas no final era mais simples usá-lo.O
for
comando se divide%P%
em%%f
e%%g
no primeiro;
.Observe o requisito para expansão atrasada, para que
P
ele seja expandido com seu valor atual em cada passagem do loop.fonte
Simplesmente como dizer @Ramhound parse string e use para
fonte
(
,)
) em qualquer um dos caminhos. Além disso, qual é oexist
comando? O único uso padrão deexist
incmd
é uma cláusula noif
comando, por exemploif exist "%%f"\*.* (echo %%f is a directory) else echo %%f is not a directory
, que mostrará um erro se o caminho não existir, ou se for um arquivo, e não um diretório.