
在光盤上for語句執行多個程序時執行順序為什么會對文件名的大小寫敏感前些時候做了一個XP的補丁集,用批處理來靜默安裝。因為是在虛擬機中測試的,在測試中發現了一個很奇怪的問題:假設“patch_2”文件夾下有若干文件,比如說:a.exeB.exec.exeD.exee.exeF.exe注意:文件名有大小寫的區別。我的批處理的部分代碼如下:
- @echo off
- setlocal enabledelayedexpansion
- for /r %%l in (*.exe) do (
- set /a b+=1
- )
- for /r patch_2 %%i in (*.exe) do (
- set /a a+=1
- echo 正在安裝: [!a!/!b!] %%~nxi
- %%i /quiet /norestart /nobackup
- )
- echo.
- echo.
- echo 總計!b!個補丁安裝完畢,建議立即重新啟動。
- pause
nclick="copycode($('code0'));">復制代碼
假如將patch_2文件夾及批處理拷貝到硬盤上執行的話,執行順序將會是:a.exeB.exec.exeD.exee.exeF.exe按文件名從小到大的順序來執行,文件名是不是大小寫都沒有影響。假如將patch_2文件夾及批處理制成ISO鏡像,然后加載到虛擬機的光驅來執行的話,執行順序將會是:B.exeD.exeF.exea.exec.exee.exe執行順序是先按從小到大的順序執行大寫字母開頭的文件,等所有大寫字母開頭的文件執行完畢后,才按從小到大的順序執行小寫字母開頭的文件。為什么從硬盤執行的話,for語句對大小寫就不敏感,從光驅執行的話,就會對大小寫敏感呢?是for語句本身就是這樣規定的,還是我的代碼寫得有問題?