2015-03-03 4 views
0

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

Это мой код до сих пор:

for /F "tokens=* delims=," %%A in (C:\MACs.log) do (

@ECHO OFF 
PowerShell.exe "& arp -a | select-string "%%A" |% {$_.ToString().Trim().Split(" ")[0]} >> C:\tempfile.log 

ИТАК, когда я запускаю эту команду в PowerShell все работает нормально, но в Batch я получаю некоторые ошибки маркеров.

Главное сообщение этого кода - создать цикл из MACs.log, где у меня есть несколько MAC-адресов, на которые я хочу получить IP-адреса, и вывести их в файл tempfile.log.

Если кто-то может протянуть руку помощи, будем признательны.

+0

Почему? Просто запустите сценарий PowerShell напрямую. –

ответ

1

Почему бы не решить его напрямую из пакетного файла?

(for /f %%a in (' 
    arp -a ^| findstr /l /i /g:"c:\MACs.log" 
') do @echo %%a) > c:\tempfile.log 

Команда внутренняя труба будет выполнять arp и фильтровать свой вывод с помощью MAC-адреса, найденные в MACs.log. Этот список обрабатывается командой for /f, которая будет извлекать первый токен в строке (поведение по умолчанию), то есть IP-адрес и эхо-сигнал. Весь вывод отправляется в файл temp.

+0

Спасибо за отзыв. Строка Powershell казалась легче изначально. Я собираюсь использовать код, который вы предложили. Большое спасибо! Невозможно повысить свой пост, поскольку у меня недостаточно Rep ... +1: D – DecrepitSoldier

Смежные вопросы