
[已解決]這段代碼為什么被跳過不能執行只能被調用最后由 aztec 于 -6-8 00:15@echo off & setlocal enabledelayedexpansionfor /f delims=g %%a in ('cmd /u /cEcho,有') do set Tab=%%aset w=wmic diskdrive where MediaType like 'fixed%%'set w=%w% get DeviceID^,Model^,Sizefor /f tokens=1*delims== %%i in ('%w% /value ^| find =') do (if /i %%i == DeviceID set /a n+=1set %%i!n!=%%j)set w1=wmic path Win32_DiskDriveToDiskPartition get Antecedent^,Dependentset w2=wmic path Win32_LogicalDiskToPartition get Antecedent^,Dependent(for /l %%i in (1 1 !n!) do (call :GetSize !Size%%i!000 sizeif !size! gtr 102400 (set /a size/=1024 & set G= GB) else set G= MBset /p=硬盤%%i:%Tab%<nulset /p=大小:!size:~,-2!.!size:~-2!!G!%Tab%<nulset /p=型號:!Model%%i!<nulecho,for /f tokens^=4delims^=^ %%a in ('%w1% ^| find /i !DeviceID%%i!') do (for /f tokens^=4delims^=^ %%b in ('%w2%^|find /i %%a') do (set w3=wmic logicaldisk where Name='%%b' get FreeSpace^,Sizefor /f tokens=1,2 %%c in ('!w3!^|findstr [0-9]') do (call :GetSize %%c000 freecall :GetSize %%d000 sizeset /a used=size-freeif !size! gtr 102400 (set /a size/=1024,used/=1024 & set G= GB) else set G= MBset /a used=1000*used/sizeif !used:~,-1! == set used=0!used!set /p=分區%%b%Tab%<nulset /p=大小:!size:~,-2!.!size:~-2!!G!%Tab%<nulif !free! gtr 102400 (set /a free/=1024 & set G= GB) else set G= MBset /p=剩余:!free:~,-2!.!free:~-2!!G!%Tab%<nulset /p=使用率:!used:~,-1!.!used:~-1!%%<nulecho,)))echo,))pause & exit/b:GetSizeset num=%1 & set n= & set %2=for %%a in (16 8 4 2 1) do (if not !num:~%%a!== set /a n+=%%a & set num=!num:~%%a!)set num=%1 & set /a n-=6for /l %%a in (!n! -1 1) do (set s=!num:~,-%%a!if !s:~,1! == 0 set s=!s:~1!set /a m=s%%1048576,s/=1048576set %2=!%2!!s!set num=!m!!num:~-%%a!)if not defined %2 (set %2=!num:~,-1!) else if !%2:~,1! == 0 set %2=!%2:~1!這段代碼,我想用在自己的bat中,但是如果是直接放進去,不管是放在頭尾中間什么地方都不行,直接跳過了,唯一方法是只能將其保存為bat,用call調用,應該是環境變量的問題,但不知道怎么修改,還請各位老師賜教

