Estou tentando listar o nome do diretório (somente nome, caminho não completo) e subdiretórios (somente nome, caminho não completo) dentro dele. Há apenas um nível de subdiretórios. Eu usei o script abaixo para fazer isso:
@echo off&setlocal enableextensions
for /r "PATH" %%G in (.) do (
Pushd %%G
for %%* in (.) do set MyDir=%%~n*
echo %MyDir%
popd
)
endlocal&goto :eof
O problema com o script acima é que ele está mostrando o diretório raiz com o caminho completo. Como posso apenas mostrar os diretórios em relação àqueles em que estou trabalhando?
windows
command-line
batch
shekhar
fonte
fonte
Você pode usar:
para exibir apenas:
Se for a raiz assim:
não exibirá nada como:
Mas você disse:
Você quer dizer, por exemplo, quando executado na raiz da unidade, será exibido:
O que realmente está sendo exibido e o que você deseja exibir no caso da raiz? Eu acho que não deve ser nada (vazio), mas pode não ser o que você deseja.
Deixe-me saber o que você deseja para este caso e vou ver se consigo consertar seu arquivo em lotes.
Editar:
Eu acho que o que você quer dizer com "raiz" é o diretório em que você está iniciando sua pesquisa. Eu pensei que você queria dizer que você estava executando o arquivo em lotes na raiz do drive como "C: \".
Esse arquivo em lotes deve fazer o que você deseja ...
Se você salvá-lo em um arquivo chamado:
Então você pode executá-lo assim:
se você executá-lo sem argumentos como este:
ele usará o diretório atual como ponto de partida.
Aqui está o arquivo em lotes:
Eu tenho uma estrutura de diretórios como:
Se eu estiver logado (CD), o caminho:
e eu corro o getdirname como qualquer um de:
a saída será semelhante a:
Se eu executar o getdirname como:
a saída será semelhante a:
Se eu executar o getdirname como:
e execute o arquivo em lotes, a saída será semelhante a:
Deixe-me saber se isso está fazendo o que você precisa ou se precisa de "ajustes".
fonte