2016-04-05 14 views
0

Я пытаюсь сделать пакетный скрипт, который будет выводить следующим образом для фиксированного диска:Batch - выходные WMIC Команда несколько строк добавить строку (Computer Name)

Имя компьютера, Drive Letter, Free Disk Space

вывод может быть одной строкой в ​​случае, если есть только один диск или несколько строк, если есть более одного диска

теперь со следующей командой, я получаю вывод для компьютера, но это не дает компьютеру имя. Мне нужно включить имя компьютера, потому что я буду запускать его на нескольких компьютерах с помощью сценария, использующего цикл.

WMIC/узел: "% COMPUTERNAME%" LogicalDisk Где DriveType = "3" Получить DeviceID, FreeSpace

используя пакетный сценарий, я могу назвать выход компьютера, но он появляется только над диском-космических линий

echo off 
for /f %%i in (computers.txt) do (
echo %%i >>outputfile.txt 
wmic /node:"%%i" LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace' >>outputfile.txt 
) 

если имя компьютера «COMPUTER1» и имеет 3 привода, это идет, как

COMPUTER1 
DeviceID FreeSpace 
C:  <free space bytes> 
D:  <free space bytes> 
E:  <free space bytes> 

то, что я хочу это:

ComputerName DeviceID FreeSpace 
COMPUTER1 C:  <free space bytes> 
COMPUTER1 D:  <free space bytes> 
COMPUTER1 E:  <free space bytes> 

Событие заголовок столбца может быть исключен.

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

ответ

0

вы должны захватить wmic выход на for, то вы можете постобработки каждую строку:

echo Computername DeviceID FreeSpace 
for /f "delims=" %%a in ('wmic /node:"%%i" LogicalDisk Where DriveType^="3" Get DeviceID^,FreeSpace ^|find ":"') do @echo %%i %%a 
+0

это просто замечательно! большое спасибо. Он решает, что мне нужно. Это настоящая сила этого сообщества с таким большим количеством людей! – arifr

+0

сделал некоторые изменения, чтобы захватить размер диска и положить разделитель для/f "tokens = 1,2,3" %% a in ('wmic/node: "%% i" LogicalDisk Where DriveType^= "3" Получить идентификатор устройства ^, Size ^, FreeSpace^| find ":" ') do @echo %% i ~ %% ​​a ~ %% ​​b ~ %% ​​c >>% OUTPUT_FILE% – arifr

+0

просто имейте в виду, 'wmic' сортирует результат" столбцов "в алфавитном порядке. Если вы хотите «DeviceID, Size, FreeSpace», вам нужно «%% a %% c %% b' – Stephan