Насколько я понимаю, вы хотите обнаружить файловую систему диска и сохранить ее в переменной среды для последующего использования в пакетном файле.
Это означает, что вы планируете вызывать VBScript из этогопакетный файл и может использовать пакетный файл для разрешения любых переменных среды, таких как %SYSTEMDRIVE%
, и нет необходимости делать это из файла VBS (что было бы возможно, но это будет более гибким, когда мы сможем передать вбуква диска в качестве параметра к скрипту).
Давайте создадим VBS, который принимает один аргумент и ищет тип файловой системы, если это возможно.
Option Explicit
Dim shell, fso, drive, driveletter
' we expect a single argument - a drive letter in the form X:
If WScript.Arguments.Unnamed.Count = 0 Then Die "Please specify drive letter."
driveletter = WScript.Arguments.Unnamed(0)
Set shell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
' try to get the drive object for that drive letter, die on error
On Error Resume Next
Set drive = fso.GetDrive(driveletter)
If Err.Number <> 0 Then Die "Could not detect filesystem type for " + driveletter + " (" + Err.Description + ")"
Wscript.StdOut.Write drive.FileSystem
Sub Die(message)
WScript.StdErr.WriteLine message
WScript.Quit 1
End Sub
Теперь это можно назвать автономным (для целей командной строки используйтеинтерпретатор сценария командной строки, cscript.exe):
cscript /nologo filesystem.vbs %SYSTEMDRIVE%
Или он может быть вызван из пакетного файла (мы будем использовать цикл for
для присвоения вывода сценария переменной):
@echo off
for /f "usebackq delims=" %%s in (`cscript /nologo filesystem.vbs %SYSTEMDRIVE%`) do (
set FILESYSTEM=%%s
)
echo The filesystem in %SYSTEMDRIVE% is %FILESYSTEM%.
Это напечатано выше для меня:
The filesystem in C: is NTFS.