windows - Kombination af to batchfiler/'gør' mere end en kommando pr. 'do'

Indlæg af Hanne Mølgaard Plasc

Problem



Det væsentlige er, hvad jeg vil have, at få den bruger, der bruger en computer. Jeg har nedenstående kode fra dette fællesskab, der fungerer godt ...,


::Batch 1    

@echo off

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

do echo \%\%r >> output2.txt


..., bortset fra at mine computernavne har bindestreger i dem og kan ikke bruges.


For at omgå det, kører jeg nedenstående kode (også fået det her, tak igen!) For at hente IP'erne først:


::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


Jeg sender derefter disse oplysninger til den første batch-fil ovenfor for at få værtsnavne.


Så stort set placerer jeg mine værtsnavne på en txt-fil med navnet Hosts.txt, kør batch 2, og kør derefter batch 1.


Jeg har prøvet mange dage at kombinere begge, men kan ikke synes at finde ud af det.

Bedste reference


Som @aschipfl foreslog. Brug FOR /? for at se oplysninger om brug af kommandoen FOR.


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