Я могу запустить приведенную ниже команду с помощью командной строки, но не в пакетном файле.
plink -ssh -pw password -batch root@ip "ping -w 1 -c 1 server | grep -oP '\d+(?=% packet loss)' > test.txt"
При запуске из командной строки содержимое результирующего txt-файла равно «0», что означает отсутствие потери пакетов. Результирующий txt-файл при запуске из пакетного файла пуст. Возможно, проблема с escape-символом в командном файле?
Я сомневаюсь, что | - это проблема, но @SomethingDark прав насчет %, который нужно удвоить. Вы уверены, что > test.txt не должен находиться вне заключительной двойной кавычки?
Дополнительный% был ответом, спасибо. "Вы уверены, что> test.txt не должен находиться за пределами закрывающей двойной кавычки?" Это зависит от того, где вы хотите разместить текстовый файл. Внутри кавычек он будет размещен на сервере, снаружи будет локальным.





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