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

[系统相关] [已解决]不用第三方命令无损将系统分区后的空间扩展给系统盘

本帖最后由 yakeyun 于 2022-4-18 15:28 编辑

如图所示,如何将C盘后面的40G空间,不重启系统情况下,无损扩展给C盘,D盘后面的分区容量不要动。



已知用下面命令可以完成扩展,其中标签"系统"是唯一固定变量:
  1. diskpart
  2. list volume
  3. select volume 0
  4. extend noerr
复制代码


待扩展分区编号,已经用下面命令获取到了,就是不知道DISKPART的命令传递该怎么调用。
  1. @echo off
  2. for /f "tokens=2" %%a in ('echo list volume ^| diskpart ^|find/i "系统" ^| find /i "启动"') do (
  3. set nc=%%a
  4. )
  5. echo 当前待扩展分区编号为:%nc%
  6. pause
复制代码

===========================================================================



===========================================================================
修改为下面命令后,参数传递不过去,卡在了最后一步(extend noerr 命令没有自动确认)。
  1. @echo off
  2. for /f "tokens=2" %%a in ('echo list volume ^| diskpart ^|find/i "系统" ^| find /i "启动"') do set nc=%%a
  3. echo select volume %nc% >C:\Users\Administrator\Desktop\scriptname.txt
  4. echo 当前待扩展分区编号为:%nc%
  5. (@echo extend noerr | diskpart /s "C:\Users\Administrator\Desktop\scriptname.txt")
  6. pause
复制代码

===========================================================================



===========================================================================
经过不断尝试,发现传递参数只要记录在文本中,可以无限传递执行。
最终代码为:
  1. @echo off
  2. for /f "tokens=2" %%a in ('echo list volume ^| diskpart ^|find/i "系统" ^| find /i "启动"') do set nc=%%a
  3. echo select volume %nc% >C:\Users\Administrator\Desktop\scriptname.txt
  4. echo extend noerr >>C:\Users\Administrator\Desktop\scriptname.txt
  5. echo 当前待扩展分区编号为:%nc%
  6. diskpart /s "C:\Users\Administrator\Desktop\scriptname.txt"
  7. pause>nul
复制代码

返回列表