Тема: CMD/BAT: Список дисков
Как создать список жестких дисков с выводом в файл? Файл результата должен содержать просто буквы, например:
C
D
E
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как создать список жестких дисков с выводом в файл? Файл результата должен содержать просто буквы, например:
C
D
E
Я не знаю, может быть есть соответствующие встроенные команды, которые показывают список дисков. Вот первое лобовое решение:
@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.
for /f "skip=1 delims=:" %%a in ('"wmic logicaldisk where (drivetype="3") get Caption"') do echo:%%a>>harddisks.txt
>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. Опоздал .
Коллеги, знающие о команде WMIC, показали краткое и красивое решение.
Красиво, подскажите только, где взять wmic.exe (на вин 7 типа установлен, на ХР Home нету)? Чет на сайте Майкрософт не могу найти его...
Да, может кто-нить совместить это с кодом, приведенным тут: http://forum.script-coding.com/viewtopic.php?id=2328
Угу. Нет его в данной версии. Можете использовать следующий подход: взять код на 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"
Спасибо alexii !
Все получилось, ура!
сто лет небыл на форуме
внесу свои 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
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться