Board logo

标题: [其他] [已解决]XP中for中提取fsutil命令结果,if判断for变量失效? [打印本页]

作者: F_Ms    时间: 2015-3-18 11:27     标题: [已解决]XP中for中提取fsutil命令结果,if判断for变量失效?

很疑问,我的两个虚拟机WindowsXP_SP3都无法通过命令,懂的看图应该就知道了,望大神解答
作者: DAIC    时间: 2015-3-18 11:45

XP系统里面把fsutil命令的执行结果重定向到a.txt
用UltraEdit之类的十六进制编辑器打开a.txt
可以看到行尾有特殊字符
作者: F_Ms    时间: 2015-3-18 12:15

回复 2# DAIC

    看不懂这种,但是发现用16进制打开后确实看到了不同,但是还是很疑问,希望大神稍详细解答下
作者: apang    时间: 2015-3-18 13:05

回复 3# F_Ms


    16进制0D = 回车(\r)
16进制0A = 换行(\n)

去掉结尾多余的0D字符:
  1. for /f "tokens=2delims=- " %%a in ('fsutil fsinfo drivetype c:') do set "v=%%a"
  2. echo,[%v%]
复制代码

作者: F_Ms    时间: 2015-3-18 13:30

本帖最后由 F_Ms 于 2015-3-18 13:32 编辑

回复 4# apang


    恩,最终测试赋值到变量后感觉还是有字符的样子使判断不成立,使用了!f:~0,5!直接截取前五个字符运行通过,这次长见识了,谢谢坛友
作者: apang    时间: 2015-3-18 20:14

回复 5# F_Ms
  1. for /f "tokens=2delims=- " %%a in ('fsutil fsinfo drivetype c:') do (
  2.         set "v=%%a"
  3. )
  4. if "%v%" == "固定驱动器" echo,OK
  5. pause
复制代码
  1. for /f "tokens=2delims=- " %%a in ('fsutil fsinfo drivetype c:') do (
  2.         for /f %%b in ("%%a") do if "%%b" == "固定驱动器" echo,OK
  3. )
  4. pause
复制代码
其实除了fsutil,wmic也有这种情况:
C:\Windows\System32>for /f "delims=" %a in ('wmic LogicalDisk where "Name='c:'"
get Description') do echo,[%a]

] \Windows\System32>echo,[Description
]Description

] \Windows\System32>echo,[Local Fixed Disk
]Local Fixed Disk

] \Windows\System32>echo,[
]

C:\Windows\System32>

很奇怪的显示有没有?
作者: F_Ms    时间: 2015-3-18 21:59

回复 6# apang


    确实,早上写的时候还以为自己发现了个BUG呢,(因为win8.1下正常导致的误解),一层for还无法进行判断
作者: CrLf    时间: 2015-3-18 23:05

真蛋疼
作者: tigerpower    时间: 2015-3-19 00:05

本帖最后由 tigerpower 于 2015-7-4 06:48 编辑

你发现Bug了!
作者: DAIC    时间: 2015-3-19 08:28

回复 9# tigerpower


    这就是为什么不建议大家继续使用XP系统的原因之一啦




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