Я знаю, что вы просили команду PowerShell, но того, что я собираюсь предложить, может быть достаточно.
Он будет работать в стандартной оболочке Cmd.exe, что означает, что вы также можете запустить его в PowerShell, и он будет обратно совместим со старыми операционными системами Windows:
TYPE abc.txt | FIND "Logged into app\prog58" >NUL && IF NOT DEFINED %ERRORLEVEL% (TYPE NUL >prog58)
Возможно, я неправильно понимаю вопрос. Не могли бы вы уточнить, если это именно то, что вы ищете, или если вы хотите создать файл с именем progXX
на основе того, какой текст существует в abc.txt?
Изменить после пояснения: следующее также совместимо с Cmd.exe и не является эксклюзивным для PowerShell, поэтому, хотя его нельзя использовать в качестве однострочного, его можно назвать простым пакетным сценарием:
@ECHO OFF
SETLOCAL && SETLOCAL EnableExtensions EnableDelayedExpansion
FOR /F "tokens=1-2 delims=\" %%A IN ('TYPE abc.txt ^| FINDSTR /C:"Logged into app\prog"') DO (SET FILENAME=%%B)
SET FILENAME=%FILENAME:~0,6%
TYPE NUL >%FILENAME%
Предостережение: это зависит от progXX
имеющего ровно 2 цифры, поэтому progXXX
не будет работать.