PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

回應
 
主題工具
dnagl
Basic Member
 

加入日期: Sep 2003
文章: 19
Question 批次檔的疑問(判斷錯誤)

寫了一串指令如下:
if "%PROCESSOR_ARCHITECTURE%" == "x86" goto NT6x86
if "%PROCESSOR_ARCHITECTURE%" == "AMD64" goto NT6x64

主要是讓他判斷WIN7的位元,但是只要用類似WINRAR的自解壓縮讓他去跑批次檔BAT在64BIT系統下會出現判斷錯誤,他會識別成32BIT而不是64BIT,只有作成EXE的檔會出錯,單獨執行BAT又正常,請問要怎麼處理這詭異的現象,百思不得其解...
     
      
舊 2011-08-20, 10:40 PM #1
回應時引用此文章
dnagl離線中  
polar168
Elite Member
 
polar168的大頭照
 

加入日期: Mar 2004
文章: 4,207
雖然我不懂...


不過有一個問題我想問一下, 你的指令裡指的是CPU的部份, 還是OS的部份


如果CPU是有X64的, 但安裝在X86的OS底下....它會怎麼跑
 
__________________
https://pcdvd.com.tw/showpost.php?p=1087489044&postcount=7

一生卜卦 缺財想錢
舊 2011-08-20, 11:02 PM #2
回應時引用此文章
polar168離線中  
dnagl
Basic Member
 

加入日期: Sep 2003
文章: 19
引用:
作者polar168
雖然我不懂...


不過有一個問題我想問一下, 你的指令裡指的是CPU的部份, 還是OS的部份


如果CPU是有X64的, 但安裝在X86的OS底下....它會怎麼跑


同樣的CPU OS再32跟64呈現的部分不一樣
32BIT的OS會出現x86
64BIT的OS會出現AMD64

主要是讓他判斷OS部分,打包成自解檔就會判斷錯誤,反之

如果換成
echo %processor_architecture% | find "86" >nul && if %errorlevel% equ 0 echo 32 Bit
echo %processor_architecture% | find "64" >nul && if %errorlevel% equ 0 echo 64 Bit
情況跟上面一樣,只要打包成類似安裝檔EXE就會判斷錯誤,單獨執行BAT卻正常
舊 2011-08-21, 12:03 AM #3
回應時引用此文章
dnagl離線中  
ylong
Advance Member
 

加入日期: Feb 2001
您的住址: 台北
文章: 371
引用:
作者dnagl
用類似WINRAR的自解壓縮

自解壓縮程式應該是 32bit 的吧? 這樣 W7 在 32bit mode 跑那程式,
所以那個變數就是x86
舊 2011-08-21, 12:07 AM #4
回應時引用此文章
ylong離線中  
polar168
Elite Member
 
polar168的大頭照
 

加入日期: Mar 2004
文章: 4,207
引用:
作者dnagl
同樣的CPU OS再32跟64呈現的部分不一樣
32BIT的OS會出現x86
64BIT的OS會出現AMD64

主要是讓他判斷OS部分,打包成自解檔就會判斷錯誤,反之

如果換成
echo %processor_architecture% | find "86" >nul && if %errorlevel% equ 0 echo 32 Bit
echo %processor_architecture% | find "64" >nul && if %errorlevel% equ 0 echo 64 Bit
情況跟上面一樣,只要打包成類似安裝檔EXE就會判斷錯誤,單獨執行BAT卻正常


那...會不會是因為解壓縮軟體的關係
__________________
https://pcdvd.com.tw/showpost.php?p=1087489044&postcount=7

一生卜卦 缺財想錢
舊 2011-08-21, 12:11 AM #5
回應時引用此文章
polar168離線中  
dnagl
Basic Member
 

加入日期: Sep 2003
文章: 19
引用:
作者ylong
自解壓縮程式應該是 32bit 的吧? 這樣 W7 在 32bit mode 跑那程式,
所以那個變數就是x86

自解檔是用WINRAR 64BIT版
舊 2011-08-21, 12:27 AM #6
回應時引用此文章
dnagl離線中  
dnagl
Basic Member
 

加入日期: Sep 2003
文章: 19
後來我發現只要是用自解檔出來的批次檔裡面的環境變數都會造成誤判,我用WIN7-64
BAT裡面有用到%ProgramFiles%,而使用%ProgramFiles(X86)%會變成C:\Program Files(X86)為正常,而使用%ProgramFiles%會變成C:\Program Files為正常,問題來了...我用%ProgramFiles%結果他識別成C:\Program Files(X86)
舊 2011-08-21, 11:19 PM #7
回應時引用此文章
dnagl離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是05:37 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。