Windows 批处理文件无需提升权限即可获取文件系统信息

Windows 批处理文件无需提升权限即可获取文件系统信息

我有一个批处理文件,需要检查文件系统并根据文件系统(在此环境中可能是 NTFS 或 FAT32)选择正在运行的程序的选项。对于我拥有管理员权限的 Windows 系统,我可以使用“fsutils fsinfo”获取文件系统信息 - 但是我有一些没有管理员权限的用户可能需要运行此批处理文件,而我可能也不一定拥有这些机器的管理员权限。是否有与“fsutils fsinfo”等效的程序可以获取(但显然不能像 fsutils 那样写入)非管理员用户的文件系统信息?

答案1

代码片段:

for /F %%G in ('
    wmic path win32_volume where "Caption='C:\\'" get FileSystem /value^|findstr "="
  ') do for /F %%g in ("%%~G") do set "_%%~g"
set _FileSystem

输出

==>for /F %G in ('wmic path win32_volume where "Caption='C:\\'" get FileSystem /value
^|findstr "="') do @for /F %g in ("%~G") do @set "_%~g"

==>set _FileSystem
_FileSystem=NTFS

==>

资源(必读):

编辑获取所有文件系统居住驱动器:

@ECHO OFF >NUL
rem SETLOCAL enableextensions
for /F %%X in ('
    wmic path Win32_LogicalDisk get caption /value^|findstr "="
  ') do for /F "tokens=2 delims==:" %%x in ("%%~X") do (

  for /F %%G in ('
      wmic path win32_volume where "Caption='%%~x:\\'" get FileSystem /value^|findstr "="
    ') do for /F %%g in ("%%~G") do set "_%%~x-%%~g"

)
set _

输出

==>set _
Environment variable _ not defined

==>D:\bat\SU\929159.bat
_C-FileSystem=NTFS
_D-FileSystem=NTFS
_E-FileSystem=CDFS

==>set _
_C-FileSystem=NTFS
_D-FileSystem=NTFS
_E-FileSystem=CDFS

==>

答案2

这是一个对我来说也有用的替代解决方案,尽管它不是纯粹通过批处理文件完成的:

在 VBS 文件“GetFileSys.vbs”中:

Set args = Wscript.Arguments
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colVols = objWMIService.ExecQuery ("select * from Win32_LogicalDisk")

For Each arg in args
    For Each objVol in colVols
        if objvol.Name = left(arg,2) then
            Wscript.Echo objVol.FileSystem
        end if
    Next
Next

(上面的部分是我从 Maudam 提供的 paxdiablo 链接借来的,https://stackoverflow.com/questions/6995813/how-can-i-use-batch-to-determine-if-a-computer-is-using-fat32-or-ntfs,然后根据我的需要进行调整)

然后,在批处理文件中,我使用 cscript 调用 VBS 文件,如下所示:

cscript //NoLogo GetFileSys.vbs %1 %2 %3

结果:

NTFS
FAT32
ReFS

(直到运行这个程序我才意识到我的系统正在使用 ReFS)

相关内容