本帖最后由 dos时代菜鸟 于 2020-7-18 20:37 编辑
|
nttwqz 发表于 2020-7-18 18:17 可能是 有的卷 没有卷标 导致的, |
dos时代菜鸟 发表于 2020-7-18 17:40 然而,我测试的是你这XP、Win10都不行 fsutil的坑太多,我们还是建议楼主用坑少一点的diskpart吧,哈哈哈哈~ |
本帖最后由 nttwqz 于 2020-7-18 18:03 编辑 807979023 发表于 2020-7-18 14:09 无论那种方法,在Win10x64上面都正常。 又回想起来,最初Victor888编写的盘符整理为何要自带一个fsutil.exe了,因为这个程序有太多的坑! xp上fsutil fsinfo volumeinfo C:\结果和Win7以后系统不同虽然看似一样,到了10这句命令又错了,又不支持最后的\了,而Win8.1带不带都正常,XP不带不正常,这该让人说什么好,个人认为XP的错了,\不该有,还是Win8.1好,都兼容,也没有那么积极的推广PowerShell,右键默认CMD不像10还要改注册表,不想学PS。 下面代码在XP、Win8.1x64、Win10x64上测试通过。
XP上个人测试前面一堆代码还没有最后一句echo list vol|diskpart|findstr /i "卷 ---"执行速度快 |
|
nttwqz 发表于 2020-7-17 22:59 谢谢回复 方法1 7x32 10x64 显示正常,xp 显示错误。 方法2 7x32 10x64 显示正常,xp 显示错误。 方法3 7x32 显示正常,xp 10x64 显示错误。 |
仅测试Win8.1,XP这种古董没有。 |
我也来凑个热闹
还是WMIC来的简单,一句! |
807979023 发表于 2020-7-17 19:22 没有 xp 环境,不知差哪 |
dos时代菜鸟 发表于 2020-7-17 16:23 谢谢,代码很简洁,10和7显示正常,xp不行。 |
本帖最后由 dos时代菜鸟 于 2020-7-17 16:32 编辑 三个 for 循环 外加两个 if 可否搞定? 不用 find 也不用 设置 C d e f g 。。。。 矩阵式排查。也不用 判断 系统版本。 只在 win10 下测试了。算是 能用吧。
|
本帖最后由 807979023 于 2020-7-18 14:04 编辑 foxfirefox 发表于 2020-7-17 11:48 谢谢,已去掉%%a:\ 后面的\ xp win7x32 win10x64 都显示正常。 补充: 还是加上了%%a:后面的\ , xp win7x32 win10x64 都显示正常。 如果去掉这个\ ,xp中,本批处理所在分区卷标显示不正常。 |
本帖最后由 foxfirefox 于 2020-7-17 11:49 编辑 请将 %%a:\ 后面的\删除 (WIN10 X64 测试) @echo off&color 1f&setlocal EnableDelayedExpansion for /f "tokens=1* delims=[" %%a in ('ver') do set b=%%b set b=%b:* =% set b=%b:~0,3% set c=%b:~0,2% 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: ( FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:^|find "卷名"') do set MyVol=%%i FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:^|find "文件系统名"') do set MyFS=%%i if "%c%" == "5." ( echo. !MyFS! %%a: !MyVol! ) else ( echo %%a: !MyVol! !MyFS! ) ) ) echo.&echo 按任意键退出...&pause >nul |
plusv 发表于 2020-7-17 02:53 学习知识了!去掉一个字符后win7显示又不正常了。 为了少点代码,改成以下内容。 @echo off&color 1f&setlocal EnableDelayedExpansion for /f "tokens=1* delims=[" %%a in ('ver') do set b=%%b set b=%b:* =% set b=%b:~0,3% set c=%b:~0,2% 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: ( FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "卷名"') do set MyVol=%%i FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "文件系统名"') do set MyFS=%%i if "%c%" == "5." ( echo. !MyFS! %%a: !MyVol! ) else ( echo %%a: !MyVol! !MyFS! ) ) ) echo.&echo 按任意键退出...&pause >nul |
807979023 发表于 2020-7-16 10:31 虽然 4F foxfirefox 大牛给出了修改, 但我还是不解, 同样的批处理, 理论上应会得到相同的结果. 好奇心研究了一下原因为何 ? 发现了是 MS 真是太牛逼了, 在 Windows XP 会多显示一个 0xD 字符, 而 0xD 字符可是 RETURN, 导致发生奇怪的结果, MS 你累了吗 ? 所以改法就是, 把它的结果去掉一个字符. set MyVol=!MyVol:~0,-1! @echo off&color 1f&setlocal EnableDelayedExpansion 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: ( FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "磁碟区名"') do set MyVol=%%i&set MyVol=!MyVol:~0,-1! FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "档案系统名"') do set MyFS=%%i&set MyFS=!MyFS:~0,-1! echo %%a: !MyVol! !MyFS! ) ) echo.&echo 按任意键结束...&pause >nul |
xp下改为: @echo off&color 1f&setlocal EnableDelayedExpansion 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: ( FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "卷名"') do set MyVol=%%i FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "文件系统名"') do set MyFS=%%i echo. !MyVol! %%a: !MyFS! ) ) echo.&echo 按任意鍵結束...&pause >nul |
@echo off&color 1f&setlocal EnableDelayedExpansion 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: ( FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "磁碟區名"') do set MyVol=%%i FOR /F "tokens=3 delims= " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "檔案系統名"') do set MyFS=%%i echo %%a: !MyVol! !MyFS! ) ) echo.&echo 按任意鍵結束...&pause >nul |
参与人数 2 | 无忧币 +8 | 收起 理由 |
---|---|---|
807979023 | + 5 | 赞一个! |
holley2008 | + 3 | 赞一个! |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.