1

Тема: CMD/BAT: Список дисков

Как создать список жестких дисков с выводом в файл? Файл результата должен содержать просто буквы, например:
C
D
E

2

Re: CMD/BAT: Список дисков

Я не знаю, может быть есть соответствующие встроенные команды, которые показывают список дисков. Вот первое лобовое решение:


@echo off

set DISK_LIST=ABCDEFGHIJKLMNOPQRSTUVWXYZ

:disk.1

if not defined DISK_LIST goto disk.2
set D=%DISK_LIST:~0,1%

rem показать все имеющиеся диски в системе
cd %D%:\ 2>nul && echo.%D%

rem показать все имеющиеся диски за исключением SUBST'd
rem cd %D%:\ 2>nul && ( subst | findstr "%D%:\\">nul || echo.%D% )

set DISK_LIST=%DISK_LIST:~1%
goto disk.1

:disk.2

Как определить тип съемного накопителя из командной строки - было бы интересно узнать у коллег по форуму. Можно было бы решить с помощью JScript/VBScript.

( 2 * b ) || ! ( 2 * b )

3

Re: CMD/BAT: Список дисков

for /f "skip=1 delims=:" %%a in ('"wmic logicaldisk where (drivetype="3") get Caption"') do echo:%%a>>harddisks.txt

4

Re: CMD/BAT: Список дисков

>nul copy nul 0001.txt & for /f "skip=1" %i in ('wmic.exe LogicalDisk where "DriveType=3" get Name') do @(echo %i>>0001.txt)

Внутри пакетного файла:

@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=0001.txt

if exist "%sFile%" >nul copy nul

for /f "skip=1" %%i in ('wmic.exe LogicalDisk where "DriveType=3" get Name') do echo %%i>>%sFile%

endlocal
exit /b 0

P.S. Опоздал .

5

Re: CMD/BAT: Список дисков

Коллеги, знающие о команде WMIC, показали краткое и красивое решение.

( 2 * b ) || ! ( 2 * b )

6 (изменено: nouser, 2011-12-19 00:57:06)

Re: CMD/BAT: Список дисков

Красиво, подскажите только, где взять wmic.exe (на вин 7 типа установлен, на ХР Home нету)? Чет на сайте Майкрософт не могу найти его...
Да, может кто-нить совместить это с кодом, приведенным тут: http://forum.script-coding.com/viewtopic.php?id=2328

7

Re: CMD/BAT: Список дисков

Угу. Нет его в данной версии. Можете использовать следующий подход: взять код на WSH и исполнить его, перенаправив вывод в файл.

1. Сохранить любой из двух кодов:

Option Explicit

Dim objSWbemObjectEx

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
    For Each objSWbemObjectEx In .ExecQuery("SELECT Name FROM Win32_LogicalDisk WHERE DriveType=3")
        WScript.Echo objSWbemObjectEx.Name
    Next
End With

WScript.Quit 0

или:

Option Explicit

Const Fixed = 2

Dim objDrive

For Each objDrive In WScript.CreateObject("Scripting.FileSystemObject").Drives
    If objDrive.DriveType = Fixed Then
        WScript.Echo objDrive.Path
    End If
Next

WScript.Quit 0

в файл «GetHardDiskLetters.vbs».

2. Исполнить его посредством «cscript.exe», перенаправив вывод в файл:

cscrpipt.exe //nologo "GetHardDiskLetters.vbs">"0001.txt"

8 (изменено: nouser, 2011-12-19 01:00:16)

Re: CMD/BAT: Список дисков

Спасибо alexii !
Все получилось, ура!

9

Re: CMD/BAT: Список дисков

сто лет небыл на форуме
внесу свои 3 копейки

for /f "usebackq tokens=1,* delims=: " %i in (`mountvol^|find /i ":\"`) do @echo %i >>disks.txt

если внутри скрипта, то

@echo off
for /f "usebackq tokens=1,* delims=: " %%i in (`mountvol^|find /i ":\"`) do echo %%i >>disks.txt