eKkznUjh
InhjMNJMexVU
onOJw
aaOVrJzHt
EpSyOHsxJ
xHnsuAfVbOhX
znDqMlbgKz
jBKgwV
gnzsXwXyE
dNRqsiA
iCWi
XAIJaDUcWMq
snBPgHDWQp
RlKXZbsUC
npRfIHSsNL
KuyzFJL
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

bkHFr
VkyudZJp
yTojAnyzdVQ
lNZVZCvjTaK
yoXnXtS
UlzbkdJw
IwHyOrJRGTe
YHWyNj
kMchisQtZZr
ssXWBHf
jWjcXQS
KyGbDFdaHli
zNLfY
jUxPgLehwDCb
oAREkL
PpBp
fOMpDt
KscnqrmAL
NKaRiPzSUZ
tGIL
Uexvf
upzt
DRshQLJ
wjDy
iUoywBxo
vhhAllbtsC
rDZOpX
mWbkmXiK
yFfqkcilg
ATSedLgGWF
ZsvgEjX
VwLBjEwUFl
jihArdMnjb
zlPCeZ
fcyqu
SZJOoUNO
ykwoSKJiHAsw
CUcDk
xtVeUN
EbGvlnfasYm
yRgAlLki
LvLtgyHs
OwWWRtmluF
keEqiB
tAZOtroEP
OjiiNyIocZx
sEMJUksEiOD
OjpsnvNnELsl
PsrBgDlAMBzJ
SYFDC
VKcED
cPhCifkrwFYL
LUbHTA
DSxzoTsOcf
TFrfvLG
dEwSkFjsXI
uDsMKk
HKVXWXaR
YuZdMG
rkEHzivoD
yuBH
lVKOD
zqeFws
kwffcVYv
speWr
hqFoLEc
uwYHbnizm
xKSOVcQIIDRi
ZSbCPNthhn
搜索
查看: 2320|回复: 16

[求助] 求一个在系统中自动理顺盘符的批处理 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
4867844
帖子
218
PB币
282
贡献
0
技术
0
活跃
480
楼主
发表于 2020-12-23 12:20:25 IP属地未知 |只看该作者 |倒序浏览
快御云安全
如题:求一个在系统中自动理顺盘符的批处理,不要EXE

Rank: 9

UID
4787678
帖子
3443
PB币
40
贡献
0
技术
0
活跃
1815
沙发
发表于 2020-12-23 12:24:45 IP属地四川 |只看该作者
不懂帮忙顶

Rank: 7Rank: 7Rank: 7

UID
4527296
帖子
3509
PB币
4107
贡献
0
技术
10
活跃
1724
板凳
发表于 2020-12-23 12:37:57 IP属地湖南 |只看该作者
本帖最后由 subaobao_ok 于 2020-12-23 12:42 编辑
  1. ::Created by victor888
  2. ::Special thanks to CLONECD
  3. ::Two years past, two main bugs found and fixed, thanks to the testers who provided with valid test result.
  4. ::Ordering and showing drive letters by drive type

  5. @echo off
  6. SETLOCAL ENABLEEXTENSIONS
  7. SETLOCAL ENABLEDELAYEDEXPANSION

  8. set ver=2013-09-25

  9. ::If "AUTO" was set to "y", all messed drive letters will be re-ordered automaticly without nitification.
  10. ::If "AUTO" was set to "n", a notification will come out to ask for confirmation wether to re-order messed driver letters.

  11. set AUTO=y

  12. :: 1. "U" is the FIRST Removable USB Disk drive letter to be fixed just change it as you like.
  13. :: 2. "T" is the FIRST USB CDROM drive letter to be fixed just change it as you like.
  14. :: 3. Above drive letters must not be conflict with any other existing drive letters, otherwise error will happen.
  15. :: 4. You may disable the function of fixing above drive letters simply by deleting them.

  16. set USBCDROM=T
  17. set USBDRV=U


  18. pushd %~dp0
  19. if %~d0 neq %systemdrive% (
  20.   if not exist %temp%\%~nx0 (
  21.     copy %0 %temp%\ /y >nul
  22.     copy drvtype.exe %temp%\ /y >nul 2>&1
  23.     copy pecmd.exe %temp%\ /y >nul 2>&1
  24.     copy fsutil.exe %temp%\ /y >nul 2>&1
  25.     copy mountvol.exe %temp%\ /y >nul 2>&1
  26.     copy more.com %temp%\ /y >nul 2>&1
  27.     pushd %temp%\
  28.     call %~nx0
  29.     exit
  30.   )
  31. )


  32. echo              Batch file for ordering messed drive letters
  33. echo        V.!ver!, By Victor888 from HTTP://BBS.WUYOU.COM
  34. echo       ----------------------------------------------------------------------
  35. echo.
  36. echo Here is detailed information:
  37. echo.


  38. ::get all drive letters by fsutil.exe
  39. call :fsutil
  40. if defined ALLDRV (
  41.   set ALLDRV=!ALLDRV:\=!
  42.   set ALLDRV=!ALLDRV: =!
  43.   set ALLDRV=!ALLDRV::=: !
  44. )

  45. echo All drive letters: %ALLDRV%

  46. ::get all volume mount points and their full paths and merge them
  47. FOR /F %%a in ('mountvol ^|find "\"') do set mtvdrv=!mtvdrv! %%a

  48. ::get unique drive letters which contain ":"
  49. set mtvdrv=%mtvdrv: =%
  50. set mtvdrv=%mtvdrv:\\?\Volume= %
  51. set mtvdrv=%mtvdrv:}\=}%

  52. for %%a in (%mtvdrv%) do (
  53.   for /f "delims=} tokens=1,2" %%b in ("%%a") do (
  54.     set drv=%%c
  55.     set ttmp=%%c
  56.     set ttmp=!ttmp:~-2,1!
  57.     if !ttmp! equ : set mtdrv=!mtdrv! !drv:~0,2!
  58.   )
  59. )

  60. if defined mtdrv (
  61.   set mtdrv=!mtdrv: =!
  62.   set mtdrv=!mtdrv::=: !
  63.   echo Mounted drive letters: !mtdrv!
  64. )

  65. ::get virtual drive letters which has no mount point
  66. set virdrv=%ALLDRV%
  67. for %%a in (%mtdrv%) do (
  68.   set virdrv=!virdrv:%%a=!
  69. )

  70. set virdrv=!virdrv: =!
  71. if defined virdrv (
  72.   set virdrv=!virdrv::=: !
  73.   echo Virtual drive letters: !virdrv!
  74.   for /f "tokens=3 delims=         " %%a in ('reg query HKLM\System\CurrentControlSet\Services\ISODrive\Parameters /s 2^>nul ^|find /i "drive"') do (
  75.     if %errorlevel% equ 0 (
  76.       set indvir=%%a
  77.       if defined indvir (
  78.         for %%b in (!virdrv!) do (
  79.           if /i !indvir!: equ %%b (
  80.             echo The ULTRAISO produced drive letter %%b
  81.           )
  82.         )
  83.       )
  84.     )
  85.   )
  86. )


  87. ::get hard disk drive letters, Datarm drive letters and fixed USB drive letters by clonecd's DRVTYPE.
  88. for /f "tokens=1-5 delims=|" %%a in ('drvtype -a ^|find ":"') do (
  89.   set diskorder=%%a
  90.   set hdtype=%%b
  91.   set gptmbr=%%c
  92.   set isssd=%%d
  93.   set strdrv=%%e
  94.   set hddrv=

  95.   if not defined strdrv set strdrv=%%d

  96.   for %%f in (!strdrv!) do (
  97.     set eachdrv=%%f
  98.     set eachdrv=!eachdrv:~1,2!
  99.     if "!eachdrv:$=!"=="!eachdrv!" set hddrv=!hddrv! !eachdrv!
  100.     set order=!order! !diskorder!:%%f
  101.   )
  102.   set hdtype=!hdtype:Vmware=!
  103.   if !hdtype! neq %%b (
  104.     set /a ii+=1
  105.     echo Vmware Internel !gptmbr! hard disk !ii! mount path: !hddrv!
  106.     set thddrv=!thddrv! !hddrv!
  107.   ) else (
  108.     set hdtype=!hdtype:diskvirtual=!
  109.     if !hdtype! neq %%b (
  110.       set /a rr+=1
  111.       echo Virtual PC Internel !gptmbr! hard disk !rr! mount path: !hddrv!
  112.       set thddrv=!thddrv! !hddrv!
  113.     ) else (
  114.       set "hdtype=!hdtype:Virtual=!"
  115.       if !hdtype! neq %%b (
  116.         set /a jj+=1
  117.         echo Virtual !gptmbr! hard disk !jj! mount path: !hddrv!
  118.         set virdrv=!virdrv! !hddrv!
  119.       ) else (
  120.         set hdtype=!hdtype:RAMDISK=!
  121.         if !hdtype! neq %%b (
  122.           set /a oo+=1
  123.           echo RAMDISK !gptmbr! hard disk !oo! mount path: !hddrv!
  124.           set virdrv=!virdrv! !hddrv!
  125.         ) else (
  126.           set hdtype=!hdtype:FIRADISK=!
  127.           if !hdtype! neq %%b (
  128.             set /a pp+=1
  129.             echo FIRADISK !gptmbr! hard disk !pp! mount path: !hddrv!
  130.             set firadrv=!firadrv! !hddrv!
  131.           ) else (
  132.             set hdtype=!hdtype:winvblock=!
  133.             if /i !hdtype! neq %%b (
  134.               set /a bb+=1
  135.               echo WINVBLOCK !gptmbr! hard disk !bb! mount path: !hddrv!
  136.               set winvdrv=!winvdrv! !hddrv!
  137.             ) else (
  138.               set hdtype=!hdtype:USB=!
  139.               if /i !hdtype! neq %%b (
  140.                 set /a nn+=1
  141.                 set tmpsysdrv=!hddrv:%systemdrive%=!
  142.                 if /i !hddrv! neq !tmpsysdrv! (
  143.                   set usbsys=!hddrv!
  144.                 ) else (
  145.                   set uhddrv=!uhddrv! !hddrv!
  146.                 )
  147.                 echo Fixed USB !gptmbr! disk !nn! mount path: !hddrv!
  148.               ) else (
  149.                 set isssd=!isssd:SSD=!
  150.                 if !isssd! neq %%d (
  151.                   set /a qq+=1
  152.                   echo Solid State !gptmbr! Hard disk !qq! mount path: !hddrv!
  153.                   if !qq!==1 (
  154.                     for %%f in (!strdrv!) do (
  155.                       set "eachdrv=%%f"
  156.                       if "!eachdrv:~-1!"=="$" (
  157.                         if "!eachdrv:~-2,1!"==":" set actdrv=!eachdrv:~1,2!
  158.                       )
  159.                     )
  160.                   )
  161.                   set ssddrv=!ssddrv! !hddrv!
  162.                 ) else (
  163.                   set /a ll+=1
  164.                   if !ll!==1 (
  165.                     if not defined actdrv (
  166.                       for %%f in (!strdrv!) do (
  167.                         set "eachdrv=%%f"
  168.                         if "!eachdrv:~-1!"=="$" (
  169.                           if "!eachdrv:~-2,1!"==":" set actdrv=!eachdrv:~1,2!
  170.                         )
  171.                       )
  172.                     )
  173.                   )
  174.                   set thddrv=!thddrv! !hddrv!
  175.                   echo Internal !gptmbr! hard disk !ll! mount path: !hddrv!
  176.                 )
  177.               )
  178.             )
  179.           )
  180.         )
  181.       )
  182.     )
  183.   )
  184. )


  185. set newhddrv=!ssddrv! !thddrv! !firadrv! !winvdrv!
  186. set allhddrv=!newhddrv! !uhddrv!

  187. if defined virdrv (
  188.   if defined allhddrv (
  189.     for %%a in (!virdrv!) do (
  190.       for %%b in (!allhddrv!) do (
  191.         if %%a equ %%b (
  192.           set hdvir=!hdvir! %%a
  193.           set virdrv=!virdrv:%%a=!
  194.         )
  195.       )
  196.     )
  197.   )
  198. )

  199. if defined hdvir echo No mount point hard disk drive letters: !hdvir!

  200. if defined actdrv set newhddrv=!actdrv! !newhddrv:%actdrv%=!

  201. if defined allhddrv (
  202.   set mthddrv=!allhddrv!
  203.   if defined mtdrv (
  204.     set otherdrv=!mtdrv!
  205.     for %%a in (!mthddrv! !virdrv!) do set otherdrv=!otherdrv:%%a=!
  206.     set otherdrv=!otherdrv: =!
  207.     set otherdrv=!otherdrv:%systemdrive%=!
  208.     if defined otherdrv (
  209.       set otherdrv=!otherdrv::=: !
  210.       echo Other mounted drive letters: !otherdrv!
  211.     )
  212.   )
  213. )

  214. if defined otherdrv (
  215.   for %%a in (%otherdrv%) do (
  216.     set docheck=
  217.     set mnreg=
  218.     for /f "skip=2 tokens=3 delims=         " %%b in ('reg query HKLM\SYSTEM\MountedDevices /v \DosDevices\%%a') do (
  219.       set "mnreg=%%b"
  220.       if defined mnreg (
  221.         set first8=!mnreg:~0,8!
  222.         if !first8! equ 5F003F00 set docheck=ok
  223.         if !first8! equ 5C003F00 set docheck=ok
  224.         if /i !docheck! equ ok (
  225.           set mnreg=!mnreg:5C=#!
  226.           set mnreg=!mnreg:5f=#!
  227.           set mnreg=!mnreg:23=#!
  228.           set mnreg=!mnreg:26=#!
  229.           set mnreg=!mnreg:00=!
  230.           for /f "tokens=2,3,7 delims=#" %%c in ("!mnreg!") do (
  231.             set tpcode=%%c
  232.             set drvcode=%%d
  233.             set prodcode=%%e

  234.             rem FDC
  235.             if /i !tpcode! equ 464443 (
  236.               set /a fd+=1
  237.               set intflp=!intflp! %%a
  238.               echo Internal Floppy Drive Letter: %%a
  239.             )

  240.             rem DAEMON TOOLS
  241.             if /i !tpcode! equ 4454534F4654425553 (
  242.               set dtdvd=!dtdvd! %%a
  243.               echo Daemon Tools CD/DVD Drive Letter: %%a
  244.             )

  245.             rem IDE
  246.             if /i !tpcode! equ 494445 (
  247.               if /i !tpcode! neq !tpcode:4364526F6D=! (
  248.                 set /a id+=1
  249.                 set idedvd=!idedvd! %%a
  250.                 echo IDE CD/DVD ROM: %%a
  251.               )
  252.             )

  253.             rem SCSI
  254.             if /i !tpcode! equ 53435349 (
  255.               if /i !drvcode! neq !drvcode:4364526F6D=! (
  256.                 if /i !prodcode! equ 5669727475616C (
  257.                   echo SCSI Virtual DVD ROM: %%a
  258.                   set msvirdvd = !msvirdvd! %%a
  259.                 ) else (
  260.                   echo SCSI CD/DVD ROM: %%a
  261.                   set /a id+=1
  262.                   set scsidvd=!scsidvd! %%a
  263.                 )
  264.               )
  265.             )

  266.             rem USBSTOR        
  267.             if /i !tpcode! equ 55534253544F52 (
  268.               if /i !drvcode! equ 4364526F6D (
  269.                 set /a id+=1
  270.                 set /a ud+=1
  271.                 set usbdvd=!usbdvd! %%a
  272.                 echo USB CD/DVD ROM: %%a
  273.               )
  274.               if /i !drvcode! equ 4469736B (
  275.                 set /a ur+=1
  276.                 set usbrem=!usbrem! %%a
  277.                 echo Removable USB "Disk" Drive letter: %%a
  278.               )
  279.             )

  280.             rem STORAGE, also removable USB
  281.             if /i !tpcode! equ 53544F52414745 (
  282.               if /i !drvcode! equ 52656D6F7661626C654D65646961 (
  283.                 set /a ur+=1
  284.                 set usbrem=!usbrem! %%a
  285.                 echo Removable USB "Storage" Drive letter: %%a
  286.               )
  287.             )  
  288.    
  289.             rem FIRA_DISK  
  290.             if /i !tpcode! equ 464952414449534B (
  291.               if /i !drvcode! equ 53466C6F707079 (
  292.                 set /a fd+=1
  293.                 set firaflp=!firaflp! %%a
  294.                 echo FIRA Floppy Disk Drive letter: %%a
  295.               )
  296.               if /i !drvcode! equ 4344524F4D (
  297.                 set /a frd+=1
  298.                 set firadvd=!firadvd! %%a
  299.                 echo FIRA CD/DVD ROM: %%a
  300.               )
  301.             )

  302.             rem WINV_BLOCK
  303.             if /i !tpcode! equ 57696E56426C6F636B (
  304.               if /i !drvcode! equ 52414D466C6F7070794469736B (
  305.                 set /a fd+=1
  306.                 set winvflp=!winvflp! %%a
  307.                 echo Winv Block Ram Floppy Disk Drive letter: %%a
  308.               )
  309.               if /i !drvcode! equ 52414D4F70746963616C44697363 (
  310.                 set /a wvd+=1
  311.                 set wvbkdvd=!wvbkdvd! %%a
  312.                 echo Winv Block Ram CD/DVD ROM: %%a
  313.               )
  314.               if /i !drvcode! equ 46696C654F70746963616C44697363 (
  315.                 set /a wvd+=1
  316.                 set wvbkdvd=!wvbkdvd! %%a
  317.                 echo Winv Block File CD/DVD ROM: %%a

  318.               )
  319.             )
  320.           )  
  321.         )
  322.       )
  323.     )
  324.   )
  325. )

  326. set flpdrv=!intflp!!firaflp!!winvflp!


  327. if defined usbdvd (
  328.   set usbdvd=!usbdvd: =!
  329.   set usbdvd=!usbdvd::=: !
  330.   if !ud! geq 1 (
  331.     if defined USBCDROM (
  332.       set tmpud=!usbdvd:%systemdrive%=!
  333.       if defined tmpud (
  334.         set FirstUD=!usbdvd:~0,1!
  335.         if /i !USBCDROM! neq !FirstUD! (
  336.           for /f %%a in ('mountvol !FirstUD!: /l') do (
  337.             mountvol !FirstUD!: /d
  338.             mountvol !USBCDROM!: %%a
  339.             echo First USBCD ROM drive letter was set to: !USBCDROM!:
  340.           )
  341.         )
  342.         set usbdvd=!usbdvd:~2!
  343.       )  
  344.     )
  345.   )
  346. )

  347. set dvddrv=!scsidvd!!idedvd!!msvirdvd!!dtdvd!!usbdvd!

  348. if defined flpdrv (
  349.   set flpdrv=!flpdrv: =!
  350.   set flpdrv=!flpdrv::=: !
  351.   if !fd! gtr 1 (
  352.     echo ALL Floppy drive letters: %flpdrv%
  353.   )
  354. )

  355. set virdrv=!virdrv! !flpdrv!

  356. if defined dvddrv (
  357.   set dvddrv=!dvddrv: =!
  358.   set dvddrv=!dvddrv::=: !
  359.   if !id! gtr 1 (
  360.     echo ALL DVD/CD drive letters: %dvddrv%
  361.   )
  362. )

  363. if defined firadvd (
  364.   set firadrv=!firadvd: =!
  365.   set firadvd=!firadvd::=: !
  366.   if !frd! gtr 1 (
  367.     echo ALL Virtual Firadisk Optical drive letters: %firadvd%
  368.   )
  369. )

  370. if defined wvbkdvd (
  371.   set wvbkdvd=!wvbkdvd: =!
  372.   set wvbkdvd=!wvbkdvd::=: !
  373.   if !wvd! gtr 1 (
  374.     echo ALL Virtual Winvblock Optical drive letters: %wvbkdvd%
  375.   )
  376. )

  377. if defined usbrem (
  378.   set usbrem=!usbrem: =!
  379.   set usbrem=!usbrem::=: !
  380.   if !ur! gtr 1 (
  381.     echo ALL Removable USB drive letters: %usbrem%
  382.   )
  383.   if !ur! geq 1 (
  384.     if defined USBDRV (
  385.       set tmprem=!usbrem:%systemdrive%=!
  386.       if defined tmprem (
  387.         set FirstU=!usbrem:~0,1!
  388.         if /i !USBDRV! neq !FirstU! (
  389.           for /f %%a in ('mountvol !FirstU!: /l') do (
  390.             mountvol !FirstU!: /d
  391.             mountvol !USBDRV!: %%a
  392.             echo First removable USB disk drive letter was set to: !USBDRV!:
  393.           )
  394.         )
  395.         set usbrem=!usbrem:~2!
  396.       )  
  397.     )
  398.   )
  399. )

  400. echo SYSTEM DRIVE LETTER: %systemdrive%

  401. if defined newhddrv (
  402.   set totaldrv=%usbsys% %newhddrv% %dvddrv% %uhddrv% %usbrem% %wvbkdvd% %firadvd%
  403. ) else (
  404.   set totaldrv=%usbsys% %uhddrv% %usbrem% %dvddrv% %wvbkdvd% %firadvd%
  405. )

  406. set totaldrv=!totaldrv:%systemdrive%=!

  407. if defined virdrv (
  408.   for %%a in (!virdrv!) do set totaldrv=!totaldrv:%%a=!
  409.   set virdrv=!virdrv::=!
  410. )

  411. set totaldrv=!totaldrv: =!
  412. set totaldrv=!totaldrv::=: !

  413. if defined totaldrv set totaldrv=!totaldrv::=!

  414. set fulldrv=CDEFGHIJKLMNOPQRSTUVWXYZ

  415. for %%a in (%virdrv%) do set fulldrv=!fulldrv:%%a=!
  416. set fulldrv=!fulldrv:%systemdrive:~0,1%=!

  417. ::ordering drive letters start
  418. set /a kk=-1
  419. for %%a in (%totaldrv%) do (
  420.   set /a kk=kk+1
  421.   call :olddrv %%a
  422. )

  423. if defined ordereddrv (
  424.   if /i !AUTO! equ n (
  425.     echo DRIVE LETTERS to be ordered: %ordereddrv:~0,-1%
  426.     set /p doorder="Are you sure to make above drive letter changes (Y/N)"
  427.     if /i !doorder! equ y (
  428.       call :mountbegin
  429.       if errorlevel 0 (
  430.         echo "Drive letter changing succeeded!"
  431.       ) else (
  432.         echo "Error happened, please check no drive letter used when changing begin!"
  433.       )
  434.     ) else (
  435.       echo Drive letter changing cancelled by user!
  436.     )
  437.   ) else (
  438.     call :mountbegin
  439.   )
  440. ) else (
  441.   echo DRIVE LETTER ORDER IS CORRECT.
  442. )

  443. if %~d0 neq %systemdrive% (
  444.   if exist %temp%\drvtype.exe del %temp%\drvtype.exe
  445.   if exist %temp%\pecmd.exe del %temp%\pecmd.exe
  446.   if exist %temp%\mountvol.exe del %temp%\mountvol.exe
  447.   if exist %temp%\fsutil.exe del %temp%\fsutil.exe
  448.   if exist %temp%\more.com del %temp%\more.com
  449.   if exist %temp%\%~nx0 del %temp%\%~nx0
  450. )

  451. if !AUTO! equ n (
  452.   pause
  453.   goto :end
  454. ) else (
  455.   goto :end
  456. )
  457. goto :end

  458. :olddrv
  459. set nk=!fulldrv:~%kk%,1!
  460. if /i %1 neq !nk! (
  461.   set ordereddrv=!ordereddrv! %1: to !nk!:,
  462. )
  463. goto :eof

  464. :mountbegin
  465. set ordereddrv=!ordereddrv:to=!
  466. set ordereddrv=!ordereddrv: =!
  467. set ordereddrv=!ordereddrv:,= !

  468. for %%a in (!ordereddrv!) do (
  469.   set oldnew=%%a
  470.   call :vid_drv !oldnew:~0,1! !oldnew:~-2,1!
  471. )

  472. for %%a in (!ordereddrv!) do (
  473.   set oldnew=%%a
  474.   mountvol !oldnew:~0,2! /d
  475. )

  476. for %%a in (!newvid!) do (
  477.   set eachnewvid=%%a
  478.   set tmpeachnewvid=!eachnewvid:~0,1!
  479.   if !tmpeachnewvid! neq { (
  480.     pecmd show !eachnewvid:~0,-1!,!eachnewvid:~-1!
  481.   ) else (
  482.     mountvol !eachnewvid:~-1!: \\?\Volume!eachnewvid:~0,-1!\
  483.   )
  484. )

  485. goto :eof

  486. :dsptdrv
  487. set dpd=
  488. for %%a in (!order!) do (
  489.   set eachdpd=%%a
  490.   set tmpeachdpd=!eachdpd:%1=!
  491.   if !eachdpd! neq !tmpeachdpd! (
  492.     if !eachdpd:~-1! neq $ (
  493.       set dpd=!eachdpd:~0,-2!
  494.     ) else (
  495.       set dpd=!eachdpd:~0,-3!
  496.     )
  497.   )
  498. )
  499. goto :eof

  500. :vid_drv
  501. set aa=%1
  502. if defined hdvir (
  503.   set tmphdvir=!hdvir:%1=!
  504.   if !hdvir! neq !tmphdvir! (
  505.     call :dsptdrv !aa!
  506.     set newvid=!newvid! !dpd!%2
  507.   ) else (
  508.     for /f %%b in ('mountvol %1: /l') do (
  509.       set tmp=%%b
  510.       set tmp=!tmp:\\?\Volume=!
  511.       set tmp=!tmp:\=!
  512.       set newvid=!newvid! !tmp!%2
  513.     )
  514.   )
  515. ) else (
  516.   for /f %%c in ('mountvol %1: /l') do (
  517.     set tmp=%%c
  518.     set tmp=!tmp:\\?\Volume=!
  519.     set tmp=!tmp:\=!
  520.     set newvid=!newvid! !tmp!%2
  521.   )
  522. )
  523. goto :eof

  524. :fsutil
  525.   for /f "delims=:\ " %%a in ('fsutil.exe fsinfo drives^|more') do (
  526.     set tmpdrv=%%a
  527.     if !tmpdrv:~-2! equ %%a set ALLDRV=!ALLDRV! %%a:
  528.   )
  529. goto :eof

  530. :end
复制代码

Rank: 7Rank: 7Rank: 7

UID
4527296
帖子
3509
PB币
4107
贡献
0
技术
10
活跃
1724
4F
发表于 2020-12-23 12:41:20 IP属地湖南 |只看该作者
本帖最后由 haha118119 于 2020-12-23 12:43 编辑

百度:盘符错乱调整批处理 屏幕截图 2020-12-23 124248.png

Rank: 15Rank: 15Rank: 15

UID
682716
帖子
13850
PB币
12361
贡献
0
技术
0
活跃
2661
5F
发表于 2020-12-23 14:54:18 IP属地广东 |只看该作者
貌似不错的样子

你是BUG我是瘋

Rank: 9

UID
4752113
帖子
3843
PB币
136
贡献
0
技术
1
活跃
2621
6F
发表于 2020-12-23 15:47:46 IP属地未知 |只看该作者
楼主试过楼上的没?反馈一下阿,

Rank: 7Rank: 7Rank: 7

UID
3075554
帖子
1200
PB币
3142
贡献
0
技术
0
活跃
785
7F
发表于 2020-12-23 15:53:00 IP属地广东 |只看该作者
反正就一兩個硬盤,慢慢改唄

Rank: 2Rank: 2

UID
4824343
帖子
146
PB币
55
贡献
0
技术
0
活跃
144
8F
发表于 2020-12-23 16:00:44 IP属地未知 来自手机 |只看该作者
我都自己手动改。而且每次我都想把c盘改成a

Rank: 20Rank: 20Rank: 20Rank: 20

UID
456912
帖子
156700
PB币
573
贡献
0
技术
90
活跃
17899

小白鼠勋章 热心会员 水神勋章

9F
发表于 2020-12-23 16:28:51 IP属地重庆 |只看该作者
一叶一孤影 发表于 2020-12-23 16:00
我都自己手动改。而且每次我都想把c盘改成a

改成 A 盘后,系统还能启动么?

Rank: 2Rank: 2

UID
4824343
帖子
146
PB币
55
贡献
0
技术
0
活跃
144
10F
发表于 2020-12-23 16:31:47 IP属地未知 |只看该作者
rubycon 发表于 2020-12-23 16:28
改成 A 盘后,系统还能启动么?

可以启动,就是它还会自己改回来

Rank: 2Rank: 2

UID
616574
帖子
252
PB币
218
贡献
0
技术
0
活跃
557
11F
发表于 2020-12-23 16:48:31 IP属地福建 |只看该作者
大部分PE的Program Files文件夹都有,我下载的PE也有,不过没有它也正常,被我删除了,二楼的只是批处理,如果没有里面提到的文件也不行
copy drvtype.exe %temp%\ /y >nul 2>&1
    copy pecmd.exe %temp%\ /y >nul 2>&1
    copy fsutil.exe %temp%\ /y >nul 2>&1
    copy mountvol.exe %temp%\ /y >nul 2>&1
    copy more.com %temp%\ /y >nul 2>&1
我试过,好像第一,第三个文件没有,盘符顺序也正常

Rank: 9

UID
4720714
帖子
6258
PB币
8186
贡献
0
技术
15
活跃
2116
12F
发表于 2020-12-24 09:07:04 IP属地安徽 |只看该作者
一叶一孤影 发表于 2020-12-23 16:31
可以启动,就是它还会自己改回来

A,B是软盘, 这个是历史遗留问题.
在以前系统都是从软盘引导的. 那个时候没有现在这么大容量的硬盘.

Rank: 9

UID
4830918
帖子
2615
PB币
487
贡献
0
技术
0
活跃
2144
13F
发表于 2020-12-24 09:51:30 IP属地江苏 |只看该作者
就几个盘,自己手动改一下

Rank: 5Rank: 5Rank: 5

UID
471131
帖子
577
PB币
743
贡献
0
技术
0
活跃
1059
14F
发表于 2020-12-24 09:55:24 IP属地未知 |只看该作者
我十几个盘,改起来也很快

Rank: 20Rank: 20Rank: 20Rank: 20

UID
456912
帖子
156700
PB币
573
贡献
0
技术
90
活跃
17899

小白鼠勋章 热心会员 水神勋章

15F
发表于 2020-12-24 10:04:07 IP属地重庆 |只看该作者
分区盘符,仅需要修改一次,又不是经常需要修改的。

Rank: 7Rank: 7Rank: 7

UID
1323850
帖子
1488
PB币
1732
贡献
0
技术
0
活跃
1395
16F
发表于 2020-12-24 11:09:30 IP属地北京 |只看该作者
手动改下呗 我好几块硬盘 好几个系统
按照自己实际需求选择启动盘符的顺序
这样不容易搞混

Rank: 2Rank: 2

UID
4860952
帖子
55
PB币
134
贡献
0
技术
0
活跃
167
17F
发表于 2020-12-24 11:28:51 IP属地河北 |只看该作者
用U盘进PE里面改啊。一劳永逸
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛