in

cmd – ¿Cuál es el motivo del mensaje de error «El sistema no puede encontrar la ruta especificada»?

apple touch icon@2

Hay no solo 1 %SystemRoot%System32 en Windows x64. Existen 2 tales directorios.

El Real %SystemRoot%System32 El directorio es para aplicaciones de 64 bits. Este directorio contiene un archivo de 64 bits. cmd.exe.

Pero tambien hay %SystemRoot%SysWOW64 para aplicaciones de 32 bits. Este directorio se usa si una aplicación de 32 bits accede %SystemRoot%System32. Contiene un 32 bits cmd.exe.

Las aplicaciones de 32 bits pueden acceder %SystemRoot%System32 para aplicaciones de 64 bits mediante el alias %SystemRoot%Sysnative en camino.

Para obtener más detalles, consulte la documentación de Microsoft sobre Redirector del sistema de archivos.

Entonces el subdirectorio run fue creado en %SystemRoot%System32 para aplicaciones de 64 bits y 32 bits cmd se ejecuta para el que este directorio no existe porque no hay subdirectorio run en %SystemRoot%SysWOW64 cual es %SystemRoot%System32 para 32 bits cmd.exe o el subdirectorio run fue creado en %SystemRoot%System32 para aplicaciones de 32 bits y 64 bits cmd se ejecuta para el que este directorio no existe porque no hay subdirectorio run en %SystemRoot%System32 ya que este subdirectorio existe solo en %SystemRoot%SysWOW64.

El siguiente código podría usarse en la parte superior del archivo por lotes en caso de subdirectorio run es en %SystemRoot%System32 para aplicaciones de 64 bits:

@echo off
set "SystemPath=%SystemRoot%System32"
if not "%ProgramFiles(x86)%" == "" if exist %SystemRoot%Sysnative* set "SystemPath=%SystemRoot%Sysnative"

Cada aplicación de consola en System32run el directorio debe ejecutarse con %SystemPath% en el archivo por lotes, por ejemplo %SystemPath%runYourApp.exe.

¿Cómo funciona?

No hay variable de entorno. Archivos de programa (x86) en Windows x86 y, por lo tanto, solo hay una %SystemRoot%System32 como se define en la parte superior.

Pero se define la variable de entorno Archivos de programa (x86) con un valor en Windows x64. Por lo tanto, también se verifica en Windows x64 si hay archivos en %SystemRoot%Sysnative. En este caso, el archivo por lotes se procesa actualmente por 32 bits cmd.exe y solo en este caso %SystemRoot%Sysnative necesita ser utilizado en absoluto. De lo contrario %SystemRoot%System32 también se puede utilizar en Windows x64, ya que cuando el archivo por lotes es procesado por 64 bits cmd.exe, este es el directorio que contiene las aplicaciones de consola de 64 bits (y el subdirectorio run).

Nota: %SystemRoot%Sysnative no es un directorio! No es posible cd para %SystemRoot%Sysnative o usar if exist %SystemRoot%Sysnative o if exist %SystemRoot%Sysnative. Es un alias especial que existe solo para ejecutables de 32 bits y, por lo tanto, es necesario verificar si existen uno o más archivos al usar esta ruta usando if exist %SystemRoot%Sysnativecmd.exe o más general if exist %SystemRoot%Sysnative*.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Java: marco de colecciones

edit

Hibernate vs Sleep: diferencia y comparación