Как я могу получить список дисков из командного файла?

StackOverflow https://stackoverflow.com/questions/840677

Вопрос

Я пытаюсь получить список всех подключенных дисков для обновления системы и хотел бы получить эту информацию через командный файл. Как я могу это сделать?

Для получения бонусных баллов: Как я могу написать сценарий сопоставления этих дисков на новом сервере?

Это было полезно?

Решение

Список текущих сопоставлений будет возвращен

net use

Передача будет работать следующим образом (для забавы 1 , давайте сделаем это в пакетном скрипте вместо VBScript):

@echo off

setlocal EnableDelayedExpansion

set letter=.
set uncpath=.
set colon=.

for /f "delims=" %%l in ('net use') do @(
  for /f "tokens=2" %%t in ("%%l") do @set letter=%%t
  for /f "tokens=3" %%t in ("%%l") do @set uncpath=%%t

  set colon=!letter:~1,1!

  if "!colon!" EQU ":" (
    echo if exist !letter! net use !letter! /delete
    echo net use !letter! !uncpath! /persistent:yes
  )
)

endlocal

вывод выглядит примерно так:

if exist M: net use M: /delete
net use M: \\someserver\someshare /persistent:yes
if exist N: net use N: /delete
net use N: \\otherserver\othershare /persistent:yes

Просто сохраните это в командном файле, и все готово. <Ч>

1 На самом деле, " fun " здесь не то слово. ; -)

Другие советы

Чтобы отобразить подключенные диски

Net Use

Для сопоставления нового диска

Net Use G: \\Server\Path

Вы можете сделать это, используя vbscript

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives

For Each objDrive in colDrives
    Wscript.Echo "Drive letter: " & objDrive.DriveLetter
Next

И вы можете подключить сетевые диски с помощью

Set objNetwork = CreateObject("WScript.Network") 
objNetwork.MapNetworkDrive "G:", "\\Server\Path"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top