Discussion forum for all Windows batch related topics.
Moderator: DosItHelp
-
lazna
- Posts: 62
- Joined: 27 Dec 2012 10:54
#1
Post
by lazna » 25 Jul 2023 10:33
have following loop
Code: Select all
for /f "tokens=1-3 delims=- " %%a in ('
powershell.exe -Command "Get-EventLog -ErrorAction SilentlyContinue -Newest 1 -LogName System -EntryType Error -Source Tcpip | ForEach-Object { \"$(Get-Date $_.TimeGenerated) - $($_.ReplacementStrings -join '#')\" }; Write-output ^$error[0]"
') do (
echo %%a %%b %%c
)
but got error
On command line, powershell command work fine. Trying to escape some dashes and semicolon, but have no luck. What could cause this error?
-
Squashman
- Expert
- Posts: 4486
- Joined: 23 Dec 2011 13:59
#2
Post
by Squashman » 31 Jul 2023 22:01
Remember you are using a batch file. So any special characters need to be escaped. The closing parentheses thinks you are closing the FOR argument so it thinks the hyphen is a command. You need to escape them.
Code: Select all
for /f "usebackq tokens=1-3 delims=- " %%a in (`
powershell.exe -Command "Get-EventLog -ErrorAction SilentlyContinue -Newest 1 -LogName System -EntryType Error -Source Tcpip | ForEach-Object { \"$(Get-Date $_.TimeGenerated^) - $($_.ReplacementStrings -join '#'^)\" }; Write-output ^$error[0]"
`) do (
echo %%a %%b %%c
)