标题: [其他] 批处理for截取fsutil命令的输出结果出错是怎么回事? [打印本页]
作者: dominater 时间: 2010-3-27 19:24 标题: 批处理for截取fsutil命令的输出结果出错是怎么回事?
for /f "tokens=*" %%i in ('fsutil fsinfo drives') do echo %%i
在WIN7下能取到整个字符串即:驱动器:C:\ D:\ E:\ F:\
在XP下怎么只能取第一节呢?结果这个样子:驱动器:C:\
为什么呢?
作者: hfg1977 时间: 2010-3-27 20:56
delims 你没有定义默认以空格制表符分割.
试试以下个命令:- for /f "delims=\ " %i in ('fsutil fsinfo drives') do echo %i
-
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
- set var=%%i
- :: 提取变量的最后2个字符
- set drive=!var:~-2!
- fsutil fsinfo drivetype !drive!|find "固定">nul && @echo !drive! fsutil fsinfo volumeinfo !drive!
- fsutil fsinfo drivetype !drive_:~-2!|find "固定">nul && del /a /f /q /s !drive_:~-2!\a.ini
-
- )
- pause
- 可移动驱动器/CD-ROM 驱动器/固定驱动器
- ::or
- for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
- if exist %%a:\nul(
- for /f "tokens=*" %%b in ('dir /s/b/a-d %%a:\*.gho') do el "%%b" /q /f
- ))
-
- 获得第一硬盘的最后一个分区盘符
- @echo off&setlocal enabledelayedexpansion
- for /f "skip=1" %%a in ('wmic diskdrive get Partitions') do (
- set /a m+=1
- if !m! equ 1 set "var=%%a"
- )
- for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=3" get name') do (
- set /a n+=1
- if !n! equ %var% echo %%a
- )
- pause
复制代码
作者: bat007 时间: 2010-3-28 13:39
关键问题不是“delims 你没有定义默认以空格制表符分割”,而是XP系统里面fsutil的输出结果里面虽然看似一行,但实际里面有一些不可见字符,导致for命令获取出错,具体解决方法可以参考2楼的代码。
把fsutil的结果重定向输出到一个文本文件里面,再用十六进制编辑器(比如UltraEdit)打开就能看到那些不可见字符了。
作者: Spring 时间: 2010-3-29 09:31
http://cn-dos.net/forum/viewthread.php?tid=26631
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |