windows - Running Powershell kommando fra .bat script virker ikke, men det virker, når jeg skriver det direkte i Command Line

Indlæg af Hanne Mølgaard Plasc

Problem



Powershell -Command "cat .	mp.txt | \%{$\_ -replace 'D', ''}"


Hvorfor løbe over Powershell kommandoen fra .bat script virker ikke?
Det virker kun, når jeg skriver det direkte i kommandolinjen ...


At køre fra .bat script giver følgende besked:


    Expressions are only allowed as the first element of a pipeline.
    At line:1 char:39
+ cat .	mp.txt | {$\_ -replace 'D', ''} <<<<
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline

Bedste reference


powershell /? giver denne hjælpetekst (trimmet nedenfor for kun at vise den relevante tekst).


-Command
...
To write a string that runs a Windows PowerShell command, use the format:
    "& {<command>}"
where the quotation marks indicate a string and the invoke operator (&)
causes the command to be executed.


Så din batch fil powrshell linje skal læses:


powershell -Command "&{ cat .	mp.txt | ForEach-Object {$\_ -replace 'D', ''} }"


(Bemærk de ekstra krøllede seler indpakket omkring din kommando og \% bliver erstattet med ForEach-Object)