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.
Author: Mofi, 2015-11-10

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.

Como funciona?

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

 2
Author: Mofi, 2018-07-28 15:08:15

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.

enter image description here

Detalhes:eu usei Windows\System32\com pasta como exemplo, você deve digitar o seu próprio nome de pasta, etc. Windows\System32\run

 0
Author: Muhammad Nouman Khalid, 2015-11-10 20:11:47