[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理命令diskpart怎样由卷标获取盘符?

我在寻找这样一个答案

是否可利用 diskpart 指令

如 卷标=LENOVO  指定盘符 = I
  卷标=ACDBBB   指定盘符 = J

这样呢
也就是说 利用已知的 卷标 来获取盘符

或者 指定 盘符 C 改变为 H


另外 是否能做到 已知 盤符(而改變其類型呢:set id=12
也就是說 不知道是第幾個分區 僅利用盤符來做更改

本帖最后由 powerbat 于 2012-6-6 18:07 编辑

list volume 可以得到很多信息,很好分析。
指派盘符可用命令 assign letter=x
什么叫更改“类型”、“id”?

也可以用wmic得到一些信息:
从卷标得到盘符
  1. wmic logicaldisk where (VolumeName='xx') get Name
复制代码
从盘符得到硬盘号、分区号
  1. wmic path Win32_LogicalDiskToPartition.Dependent='Win32_LogicalDisk.DeviceID="C:"' get Antecedent /value
复制代码
会得到类似于"Disk #0, Partition #1"的结果,wmic得到的Partition是主分区扩展分区那种性质的,diskpart是逻辑分区。

TOP

本帖最后由 回憶愛情 于 2012-6-6 16:53 编辑

設置EISA隱藏屬性 (set id=12 override)
a.bat
diskpart /s a.txt

a.txt
sele disk 0
sele part 2
set id=12


= = = = = = = = = = = = = = = = = = = = = = = = = = = =
卷標得到盤符 把 該盤符 當作 一個變數 以便後面的批次運用

從盤符得到硬盤號、分區號  也是要化做變數....

另外 一班做指令都是要指定 disk part   是否可直接透過 盤符來運行

TOP

难怪,xp的diskpart没有setid命令。

如果想完全做到自动化,只用diskpart的脚本是不够的,还得靠bat帮忙。
示例
  1. @echo off
  2. echo list volume|diskpart|findstr /i LENOVO >~tmp
  3. for /f "tokens=2" %%a in (~tmp) do set part=%%a
  4. cmd /c "echo sele disk 0 & echo sele part %part% & echo set id=12" | diskpart
  5. del ~tmp
  6. pause
复制代码

TOP

难怪,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> 請按任意鍵繼續 . . .

TOP

那只是一个示例,将卷标为LENOVO的盘符的id设为12,不一定符合你的情况。

TOP

本帖最后由 回憶愛情 于 2012-6-6 17:57 编辑

回复 6# powerbat


    噗  我忘了 改 LENOVO  

測試後..發覺 由於我 (hd 0,2) (hd 0,3) 隱藏起來....
會變成 (hd 0,6)  在批次內 會當作 (hd 0,4)....

另外 第二顆 硬碟 他也會查找

就變成說 若是 第二顆有 "LENOVO" 在執行下一行指令 由於限定 硬盤 0  他會誤到

TOP

本帖最后由 回憶愛情 于 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

能得知 卷標的盤符了..繼續研究後續

該如何指定呢 (給他特定盤符....

TOP

本帖最后由 回憶愛情 于 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
精准判断 并实行了..

TOP

回复 9# 回憶愛情


    Uniqueid disk id=0x12

TOP

返回列表