2017-01-16 3 views
0

По сути, я хочу получить пользователя, который в настоящее время использует компьютер. Я получил следующий код из этого сообщества, которое работает хорошо ...,Сочетание двух пакетных файлов/«делать» с более чем одной командой на «делать»

::Batch 1  

@echo off 

for /f %%a in (output1.txt) do WMIC /NODE:%%a computersystem GET name, username 

do echo %%r >> output2.txt 

..., за исключением того, что мои имена компьютеров имеют дефис в них и не могут быть использованы.

Чтобы обойти это, я запускаю ниже код (также получил это здесь, спасибо еще раз!) Для получения IP-адреса первого:

::Batch 2 

@echo off 

for /f %%a in (hosts.txt) do call :process %%a 

goto :eof 


:process 

set hostname=%1 

for /f "tokens=4 delims=: " %%r in ('ping -n 1 %hostname%^|find /i "Statistics"') do echo %%r >> output2.txt 

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

Поэтому в основном я кладу на имя хоста текстовый файл с именем Hosts.txt, запустите пакет 2, а затем запустить пакетный 1.

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

+0

Вы можете использовать синтаксис 'for ..... do (echo 1 echo 2), чтобы делать больше вещей одновременно. Если вы выберете тот, пожалуйста, найдите ключевые слова 'DelayedExpansion' :) – geisterfurz007

+0

Либо сделайте' for ... do command_1 & command_2 & ... ', либо' for ... do ('+ _line-break_ +' command_1' + _line-break_ + 'command_2' + _line-break_ +' ... '+ _line-break_ +') '; см. также: ['for'] (http://ss64.com/nt/for.html). – aschipfl

ответ

0

Как предложено @aschipfl. Используйте FOR /?, чтобы просмотреть информацию об использовании команды FOR.

for /f %%a in (output1.txt) do (
    WMIC /NODE:%%a computersystem GET name, username 
    ECHO right here 
)