Board logo

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

作者: yakeyun    时间: 2022-4-18 14:19     标题: [已解决]不用第三方命令无损将系统分区后的空间扩展给系统盘

本帖最后由 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
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2