不僅有1 %windir%\System32
Windows x64上。有2個這樣的目錄。
真實%windir%\System32
目錄適用於64位應用程序。該目錄包含一個64位的cmd.exe
。
但也有用於32位應用程序的%windir%\SysWOW64
。如果32位應用程序訪問%windir%\System32
,則使用此目錄。它包含一個32位的cmd.exe
。
通過在路徑中使用%windir%\Sysnative
,32位應用程序可以訪問%windir%\System32
的64位應用程序。
欲瞭解更多詳情,請參閱微軟頁面File System Redirector。
所以我認爲你已經創建子目錄run
在%windir%\System32
對64位應用程序和運行32位cmd
對於此目錄不存在,因爲在%windir%\SysWOW64
沒有子目錄run
這是%windir%\System32
32位cmd.exe
。
或者你已經創建子目錄run
在%windir%\System32
爲32位應用程序和運行64位cmd
爲此,因爲這個子目錄只存在於%windir%\SysWOW64
此目錄不存在,因爲在%windir%\System32
沒有子目錄run
。
你可以使用你的批處理文件的頂部以下的子目錄的情況下run
是%windir%\System32
64位應用程序:
@echo off
set "SystemPath=%windir%\System32"
if not "%ProgramFiles(x86)%"=="" (
if exist %windir%\Sysnative\* set "SystemPath=%windir%\Sysnative"
)
接下來,你需要在調用中System32\run
目錄中的所有控制檯應用程序與%SystemPath%
您批處理文件,例如%SystemPath%\run\YourApp.exe
。
它是如何工作的?
在Windows x86上,沒有環境變量ProgramFiles(x86),因此實際上只有頂部定義的1 %windir%\System32
。
在Windows x64上,存在具有值的環境變量ProgramFiles(x86)。在Windows x64上,還會檢查是否存在%windir%\Sysnative
中的文件。在這種情況下,批處理文件使用32位cmd.exe
執行,只有在這種情況下,才需要使用%windir%\Sysnative
。否則%windir%\System32
也可以在Windows x64上使用,因爲當批處理文件以64位cmd.exe
啓動時,這是包含64位控制檯應用程序(和您的子目錄run
)的目錄。
注:%windir%\Sysnative
不是一個目錄!這是不可能的cd
到%windir%\Sysnative
或使用if exist %windir%\Sysnative
你是否使用相同的用戶上下文的所有嘗試?當在C:\ WINDOWS \ system32中時,輸入'dir/A:DRSH run';那麼輸出是什麼?當你在那裏鍵入'attrib run'時會顯示什麼? – aschipfl
這裏是圖像:http://i.imgur.com/0QWH86S.jpg –
如果你在目錄中添加一個'.',如'cd run.',會發生什麼? – aschipfl