找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29033|回复: 3

[系统相关] 【已解决】批处理获取最后一个剩余空间大于200G的分区,变量延迟应该放在哪个位置?

[复制链接]
发表于 2018-11-9 09:01:28 | 显示全部楼层 |阅读模式
本帖最后由 踏沙行 于 2018-11-10 11:24 编辑

目的:获取硬盘最后一个剩余空间大于200G的分区,并赋值给全局变量Div
  1. @echo off
  2. for /f "skip=1 tokens=1-3" %%a in ('wmic logicaldisk get caption^,drivetype^,freespace') do (
  3.         if "%%b"=="3" (
  4.                 set "size=%%c"
  5. Setlocal enabledelayedexpansion
  6.                 set "size=!size:~,-9!"
  7.                 if !size! geq 200 (
  8.                         set "Div=%%a"

  9. )
  10. endlocal
  11. ))

  12.         echo %Div%,%size%

  13. pause
复制代码
在上例中,Setlocal enabledelayedexpansion和endlocal这一对语句,应该怎么放置才最正确呢?
尝试分别放在for语句外面,或者放在每一层括号相对的位置,结果都不正确,只有把setlocal放在括号外,而endlocal话在括号内才正确。但是这样位置并不对应啊
发表于 2018-11-9 13:28:19 | 显示全部楼层
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. for /f "skip=1 tokens=1-3" %%a in ('wmic logicaldisk get caption^,drivetype^,freespace') do (
  4.     if "%%b"=="3" (
  5.         set "size=%%c"
  6.         set "size=!size:~,-9!"
  7.         if !size! geq 200 (
  8.             set "Div=%%a"
  9.         )
  10.     )
  11. )
  12. echo !Div!,!size!
  13. pause
复制代码
这样会有什么错误吗?
发表于 2018-11-9 21:58:19 | 显示全部楼层
本帖最后由 WHY 于 2018-11-10 12:31 编辑
  1. @echo off
  2. for /f "tokens=1-2" %%a in ('wmic logicaldisk where "drivetype='3' and freespace > 214748364800" get caption^,freespace^|find ":"') do (
  3.     set "caption=%%a" & set "size=%%b"
  4. )
  5.         echo;%caption% %size%
  6. pause
复制代码
 楼主| 发表于 2018-11-10 11:23:48 | 显示全部楼层
回复 3# WHY
太感谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 01:02 , Processed in 0.018218 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表