
请高手解决一个批处理find查询条件的问题:
需要检查磁盘是否是本地硬盘,因操作系统有英文和中文之分,所以需要用到find的或查询条件,以下批处理为什么不灵呀!急急急!!!for/f"tokens=1delims="...
需要检查磁盘是否是本地硬盘,因操作系统有英文和中文之分,所以需要用到find的或查询条件,以下批处理为什么不灵呀!急急急!!!
for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|find "Fixed"||find "固定"') do (echo %%f) 展开
for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|find "Fixed"||find "固定"') do (echo %%f) 展开
3个回答
展开全部
'fsutil fsinfo drivetype c:^|find "Fixed"||find "固定"'
您这句写的有问题。
现在这句相当于在fsutil的结果中找到一行,既有“Fixed”字符串又有“固定”字符串的,这是不可能的。实际上,中文系统应当查“固定”,英文系统应查“Fixed”。您可以这样写:
@echo off
@ver|find "版本"
@if %errorlevel%==0 (
@goto CHS
) else (
@goto ENG)
:CHS
@for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|find "固定"') do (echo %%f)
@goto X
:ENG
@for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|find "Fixed"') do (echo %%f)
@goto X
:X
另外您原括号命令里后面的||,cmd是不认识的(您是不是想表达“或”?批处理的或逻辑只能变相的表达出来,没有专用符号的),所以执行肯定不会成功的。
您这句写的有问题。
现在这句相当于在fsutil的结果中找到一行,既有“Fixed”字符串又有“固定”字符串的,这是不可能的。实际上,中文系统应当查“固定”,英文系统应查“Fixed”。您可以这样写:
@echo off
@ver|find "版本"
@if %errorlevel%==0 (
@goto CHS
) else (
@goto ENG)
:CHS
@for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|find "固定"') do (echo %%f)
@goto X
:ENG
@for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|find "Fixed"') do (echo %%f)
@goto X
:X
另外您原括号命令里后面的||,cmd是不认识的(您是不是想表达“或”?批处理的或逻辑只能变相的表达出来,没有专用符号的),所以执行肯定不会成功的。
展开全部
for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|findstr /r "Fixed 固定"') do (echo %%f)
没那么复杂.用findstr 一句就可以了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|find "Fixed"^|^|fsutil fsinfo drivetype c:^|find "固定"') do (echo %%f)
pause
for /f "tokens=1 delims= " %%f in ('fsutil fsinfo drivetype c:^|find "Fixed"^|^|fsutil fsinfo drivetype c:^|find "固定"') do (echo %%f)
pause
追问
请问以下的这个批处理如何修改?因为“字节总数”关键字重复,能否完整匹配查询?谢谢!
for /f "tokens=6* delims= " %%f in ('fsutil volume diskfree c:^|find "total # of bytes" /i^|^|fsutil fsinfo drivetype c:^|find "字节总数"') do (echo %%f)
追答
for /f "tokens=6* delims= " %%f in ('fsutil volume diskfree c:^|find "total # of bytes" /i^|^|fsutil fsinfo drivetype c:^|findstr /b "字节总数"') do (echo %%f)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询