Qual é a razão para a mensagem de erro "o sistema não consegue encontrar o caminho especificado"?
tenho a pasta run
na pasta system32
. Quando eu executar cmd
de dentro do Total Commander a abrir uma janela da linha de comandos com C:\Users\admin
como directório actual e quiser entrar nessa pasta, a seguinte mensagem de erro é a saída:
O sistema não consegue encontrar a localização indicada.
Quando abro cmd
directamente na pasta run
, funciona perfeitamente. Por quê?
a janela da linha de comandos ao abrir em C:\Windows\System32\run
:
C:\Windows\System32\run>cd..
C:\Windows\System32>cd run
C:\Windows\System32\run>
a janela da linha de comandos está simplesmente ligada em execução cmd
:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Všetky práva vyhradené.
C:\Users\admin>cd..
C:\Users>cd..
C:\>cd windows
C:\Windows>cd system32
C:\Windows\System32>cd run
Systém nemôže nájst’ zadanú cestu.
2 answers
Não há apenas 1 %SystemRoot%\System32
no Windows x64. Há 2 esses directórios.
O directório real %SystemRoot%\System32
é para aplicações de 64 bits. Esta pasta contém um cmd.exe
de 64 bits.
Mas há também %SystemRoot%\SysWOW64
para aplicações de 32 bits. Esta pasta é usada se um aplicativo de 32 bits aceder %SystemRoot%\System32
. Contém um cmd.exe
de 32 bits.
As aplicações de 32 bits podem aceder a %SystemRoot%\System32
para aplicações de 64 bits usando %SystemRoot%\Sysnative
Em path.
Para mais detalhes veja a documentação da Microsoft sobre O Redirector do sistema de Ficheiros .
Então eu acho que você ter criado o subdiretório run
em %SystemRoot%\System32
para aplicações de 64 bits e de 32 bits cmd
para os quais este diretório não existe como não existe nenhum subdiretório run
em %SystemRoot%\SysWOW64
que é %SystemRoot%\System32
para a rede de 32 bits cmd.exe
.
Ou você criou a subdiretoria run
em %SystemRoot%\System32
para aplicações de 32 bits e executar 64 bits cmd
para as quais esta pasta não existe, dado que não existe nenhuma subdiretoria run
em %SystemRoot%\System32
porque esta subdiretoria existe apenas em %SystemRoot%\SysWOW64
.
Você poderia usar o seguinte no topo do seu ficheiro de lote no caso da subdiretoria run
estar em %SystemRoot%\System32
para aplicações de 64 bits:
@echo off
set "SystemPath=%SystemRoot%\System32"
if not "%ProgramFiles(x86)%"=="" (
if exist %SystemRoot%\Sysnative\* set "SystemPath=%SystemRoot%\Sysnative"
)
De seguida, terá de ligar para todas as aplicações da consola na pasta System32\run
com %SystemPath%
no seu ficheiro em lote, por exemplo %SystemPath%\run\YourApp.exe
.
No Windows x86 não existe nenhuma variável de ambiente ProgramFiles (x86) e, portanto, existe realmente apenas 1 %SystemRoot%\System32
como definido no superior.
No Windows x64 existe a variável de ambiente ProgramFiles (x86) com um valor. No Windows x64 é verificado adicionalmente se existem ficheiros em %SystemRoot%\Sysnative
. Neste caso, o ficheiro em lote é executado com 32-bit cmd.exe
e só neste caso %SystemRoot%\Sysnative
precisa de ser usado. Caso contrário %SystemRoot%\System32
também pode ser usado no Windows x64 como quando o ficheiro em lote é iniciado com 64-bit cmd.exe
, Esta é a pasta que contém as aplicações da consola de 64-bit (e a sua subdiretoria run
).
Nota: %SystemRoot%\Sysnative
não é um directório! Não é possível cd
a %SystemRoot%\Sysnative
ou utilizar if exist %SystemRoot%\Sysnative
Só precisas de:
Passo 1: Ir para a pasta pessoal de C:\ com a escrita de cd.. (2 vezes)
Passo 2: aparece agora C:\>
Passo 3: Tipo dir Windows\System32\run
É tudo, mostra os ficheiros completos e os detalhes das pastas dentro da pasta de destino.
Detalhes:eu usei Windows\System32\com
pasta como exemplo, você deve digitar o seu próprio nome de pasta, etc. Windows\System32\run