Descobri acidentalmente que, se o fizer:
dir C:\
Eu recebo uma lista de arquivos que são filhos diretos da unidade C: na raiz.
No entanto, se eu fizer:
dir C:
Eu recebo uma lista enorme de arquivos que nem tenho certeza de onde eles estão (DLLs, EXEs, CPLs etc.).
Você sabe por que isso acontece e de onde vem essa lista?
windows
command-line
shell
cmd.exe
Nuno
fonte
fonte
dir c:
retorna a lista de arquivos no diretório atualRespostas:
A especificação
DIR location
mostrará o conteúdo do local.A especificação
C:
de muitos comandos, incluindo oDIR
comando, refere-se à unidade C e ao diretório atual. Para ver seu diretório atual, digite este:O
cd
comando geralmente é usado para alterar qual diretório é atual. No entanto, no MS-DOS (e sistemas operacionais similares, incluindo o Microsoft Windows moderno, mas não o Unix), a execuçãocd
por si só mostrará o diretório atual.Com toda a probabilidade, se você não estiver usando o
cd
comando, seu diretório atual provavelmente será o diretório em que seu sistema operacional foi instalado. (Pelo menos, esse é um comportamento comum para sistemas Microsoft Windows.)Você consegue fazer isso:
Isso mostrará o conteúdo de
C:\Program Files
Da mesma forma, você pode fazer algo como:
copy C:*.*
e todo o conteúdo do diretório atual será copiado.Quando você especifica
C:\
, a barra invertida indica o diretório "raiz", também conhecido como diretório "nível superior". Isso pode ou não ser o mesmo que seu diretório atual.Se você apenas especificar
DIR \
, a unidade atual será assumida. (Você pode digitar algo comoC:
ouD:
, como um comando inteiro (em uma linha por si só), alterar qual unidade é considerada a "unidade atual".) Se você apenas especificarDIR
, a unidade atual e o diretório atual serão assumido.fonte
TL; DR -
dir C:
listará o diretório atual noC:
que quer que seja, ao contrário dodir C:\
qual sempre listará a\
raiz doC:
.Longa história ... No prompt da linha de comando,
cmd
lembra o diretório atual de cada unidade acessada durante a sessão.O diretório atual em uma unidade
X:
diferente da atual pode ser definido comcd X:\etc
(sem a/d
opção que também mudaria a unidade atualX:
) e é retornado porcd X:
(sem a\
) - ambos observados nacd /?
ajuda:Consulte Por que cada unidade tem seu próprio diretório atual? para obter mais informações, incluindo esta citação.
O
strange environment variables
referido no post vinculado Quais são essas variáveis de ambiente estranhas = C:? pode ser vistoset ""
no prompt do cmd, por exemplo:fonte
c:\Users\<you>
)c:\windows\system32
ouc:\windows\temp
. Porém, nunca assuma nada disso: sempre declare ou alterne para o diretório que deseja examinar, em vez de confiar em qualquer padrão específico sendo aplicado de forma consistente.A razão pela qual você está recebendo dois diretórios diferentes é simples. A
\
é a diferença.dir C:\
está solicitando a listagem de diretórios daC
unidade\
.\
é a pasta raiz.dir C:
está solicitando a lista de diretórios de onde você está (ou foi a última, se você mudou de unidade)Se você estiver na
C
unidade e apenas digitardir
e clicarenter
, obterá o mesmo conteúdo dedir C:
. Se você estiver em uma unidade diferente e digitarC:
para voltar àC
unidade, você terminará no diretório que viu quando digitoudir C:
.fonte
Como esse não é o StackOverflow, isso deve ser apenas um comentário, na melhor das hipóteses, mas não se encaixa :.
O .NET Framework (talvez via Win32) faz refletir o diretório atual para a unidade atual:
fonte
Você está executando dois comandos juntos.
c:
é, por si só, um comando para alterar para o PREVIOUS LOCATION na unidade C :. Portanto, ele manteria o local antes de você alterar as unidades usandod:
oue:
.dir
é um comando usado para listar o conteúdo de um diretório.Então, basicamente, você está listando o conteúdo de sua pasta anterior na unidade C:, mesmo estando em outra unidade.
fonte