标题: [系统相关] 【已解决】批处理获取最后一个剩余空间大于200G的分区,变量延迟应该放在哪个位置? [打印本页]
作者: 踏沙行 时间: 2018-11-9 09:01 标题: 【已解决】批处理获取最后一个剩余空间大于200G的分区,变量延迟应该放在哪个位置?
本帖最后由 踏沙行 于 2018-11-10 11:24 编辑
目的:获取硬盘最后一个剩余空间大于200G的分区,并赋值给全局变量Div- @echo off
- for /f "skip=1 tokens=1-3" %%a in ('wmic logicaldisk get caption^,drivetype^,freespace') do (
- if "%%b"=="3" (
- set "size=%%c"
- Setlocal enabledelayedexpansion
- set "size=!size:~,-9!"
- if !size! geq 200 (
- set "Div=%%a"
-
- )
- endlocal
- ))
-
- echo %Div%,%size%
-
- pause
复制代码
在上例中,Setlocal enabledelayedexpansion和endlocal这一对语句,应该怎么放置才最正确呢?
尝试分别放在for语句外面,或者放在每一层括号相对的位置,结果都不正确,只有把setlocal放在括号外,而endlocal话在括号内才正确。但是这样位置并不对应啊
作者: Batcher 时间: 2018-11-9 13:28
- @echo off
- Setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1-3" %%a in ('wmic logicaldisk get caption^,drivetype^,freespace') do (
- if "%%b"=="3" (
- set "size=%%c"
- set "size=!size:~,-9!"
- if !size! geq 200 (
- set "Div=%%a"
- )
- )
- )
- echo !Div!,!size!
- pause
复制代码
这样会有什么错误吗?
作者: WHY 时间: 2018-11-9 21:58
本帖最后由 WHY 于 2018-11-10 12:31 编辑
- @echo off
- for /f "tokens=1-2" %%a in ('wmic logicaldisk where "drivetype='3' and freespace > 214748364800" get caption^,freespace^|find ":"') do (
- set "caption=%%a" & set "size=%%b"
- )
- echo;%caption% %size%
- pause
复制代码
作者: 踏沙行 时间: 2018-11-10 11:23
回复 3# WHY
太感谢了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |