标题: [系统相关] 批处理命令diskpart怎样由卷标获取盘符? [打印本页]
作者: 回憶愛情 时间: 2012-6-6 15:05 标题: 批处理命令diskpart怎样由卷标获取盘符?
我在寻找这样一个答案
是否可利用 diskpart 指令
如 卷标=LENOVO 指定盘符 = I
卷标=ACDBBB 指定盘符 = J
这样呢
也就是说 利用已知的 卷标 来获取盘符
或者 指定 盘符 C 改变为 H
另外 是否能做到 已知 盤符(而改變其類型呢:set id=12
也就是說 不知道是第幾個分區 僅利用盤符來做更改
作者: powerbat 时间: 2012-6-6 16:37
本帖最后由 powerbat 于 2012-6-6 18:07 编辑
list volume 可以得到很多信息,很好分析。
指派盘符可用命令 assign letter=x
什么叫更改“类型”、“id”?
也可以用wmic得到一些信息:
从卷标得到盘符- wmic logicaldisk where (VolumeName='xx') get Name
复制代码
从盘符得到硬盘号、分区号- wmic path Win32_LogicalDiskToPartition.Dependent='Win32_LogicalDisk.DeviceID="C:"' get Antecedent /value
复制代码
会得到类似于"Disk #0, Partition #1"的结果,wmic得到的Partition是主分区扩展分区那种性质的,diskpart是逻辑分区。
作者: 回憶愛情 时间: 2012-6-6 16:49
本帖最后由 回憶愛情 于 2012-6-6 16:53 编辑
設置EISA隱藏屬性 (set id=12 override)
a.bat
a.txt
sele disk 0
sele part 2
set id=12
= = = = = = = = = = = = = = = = = = = = = = = = = = = =
卷標得到盤符 把 該盤符 當作 一個變數 以便後面的批次運用
從盤符得到硬盤號、分區號 也是要化做變數....
另外 一班做指令都是要指定 disk part 是否可直接透過 盤符來運行
作者: powerbat 时间: 2012-6-6 17:06
难怪,xp的diskpart没有setid命令。
如果想完全做到自动化,只用diskpart的脚本是不够的,还得靠bat帮忙。
示例- @echo off
- echo list volume|diskpart|findstr /i LENOVO >~tmp
- for /f "tokens=2" %%a in (~tmp) do set part=%%a
- cmd /c "echo sele disk 0 & echo sele part %part% & echo set id=12" | diskpart
- del ~tmp
- pause
复制代码
作者: 回憶愛情 时间: 2012-6-6 17:11
难怪,xp的diskpart没有setid命令。
如果想完全做到自动化,只用diskpart的脚本是不够的,还得靠bat帮忙 ...
powerbat 发表于 2012-6-6 17:06
是的 我運用的系統是 Win 7 x64
以下是運行結果
Microsoft DiskPart 版本 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
在電腦: VISU_NAK-PC
DISKPART>
磁碟 0 是所選擇的磁碟。
DISKPART>
為此命令指定的引數無效。
如需命令的詳細資訊,請輸入: HELP SELECT PARTITION
沒有選擇磁碟分割。
DISKPART>
沒有選擇磁碟分割。
請選擇一個磁碟分割然後再試一次。
DISKPART> 請按任意鍵繼續 . . .
作者: powerbat 时间: 2012-6-6 17:21
那只是一个示例,将卷标为LENOVO的盘符的id设为12,不一定符合你的情况。
作者: 回憶愛情 时间: 2012-6-6 17:29
本帖最后由 回憶愛情 于 2012-6-6 17:57 编辑
回复 6# powerbat
噗 我忘了 改 LENOVO
測試後..發覺 由於我 (hd 0,2) (hd 0,3) 隱藏起來....
會變成 (hd 0,6) 在批次內 會當作 (hd 0,4)....
另外 第二顆 硬碟 他也會查找
就變成說 若是 第二顆有 "LENOVO" 在執行下一行指令 由於限定 硬盤 0 他會誤到
作者: 回憶愛情 时间: 2012-6-6 18:19
本帖最后由 回憶愛情 于 2012-6-6 18:38 编辑
謝謝 P兄
@echo off
echo list volume|diskpart|findstr /i LENOVO >~tmp
for /f "tokens=3" %%a in (~tmp) do set part=%%a
echo %part%
del ~tmp
pause
能得知 卷標的盤符了..繼續研究後續
該如何指定呢 (給他特定盤符....
作者: 回憶愛情 时间: 2012-6-6 18:30
本帖最后由 回憶愛情 于 2012-6-6 18:31 编辑
指定盘符 修改 也有着落了
批处理修改盘符
set old=T:
set new=F:
for /f %%i in ('mountvol %old% /l') do set "vol=%%i"
pushd %new% 2>nul && echo %new%盘已经存在! && pause && goto :eof
mountvol %old% /d
mountvol %new% %vol%
popd
剩下 set id=12
精准判断 并实行了..
作者: anson4 时间: 2022-11-21 20:00
回复 9# 回憶愛情
Uniqueid disk id=0x12
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |