diff --git a/bin/elixir.bat b/bin/elixir.bat index 4e66430e6f1..63bf92558ef 100644 --- a/bin/elixir.bat +++ b/bin/elixir.bat @@ -96,8 +96,9 @@ if "!par!"=="" ( goto run ) shift -set par="!par:"=\"!" -set par=!par:^!=^^^!! +set "par=!par:"=\"!" +set "par=!par:^|=\^|!" +set "par=!par:!=^^!!" if !endLoop! == 1 ( set parsElixir=!parsElixir! !par! goto startloop @@ -110,8 +111,9 @@ rem ******* EVAL PARAMETERS ************************ if ""==!par:-e=! ( set "VAR=%~1" if not defined VAR (set VAR= ) - set VAR="!VAR:"=\"!" - set VAR=!VAR:^!=^^^!! + set "VAR=!VAR:"=\"!" + set "VAR=!VAR:^|=\^|!" + set "VAR=!VAR:!=^^!!" set parsElixir=!parsElixir! -e "!VAR" shift goto startloop @@ -119,8 +121,9 @@ if ""==!par:-e=! ( if ""==!par:--eval=! ( set "VAR=%~1" if not defined VAR (set VAR= ) - set VAR="!VAR:"=\"!" - set VAR=!VAR:^!=^^^!! + set "VAR=!VAR:"=\"!" + set "VAR=!VAR:^|=\^|!" + set "VAR=!VAR:!=^^!!" set parsElixir=!parsElixir! --eval "!VAR" shift goto startloop @@ -128,8 +131,9 @@ if ""==!par:--eval=! ( if ""==!par:--rpc-eval=! ( set "VAR=%~2" if not defined VAR (set VAR= ) - set VAR="!VAR:"=\"!" - set VAR=!VAR:^!=^^^!! + set "VAR=!VAR:"=\"!" + set "VAR=!VAR:^|=\^|!" + set "VAR=!VAR:!=^^!!" set parsElixir=!parsElixir! --rpc-eval %1 "!VAR" shift shift diff --git a/lib/elixir/test/elixir/kernel/cli_test.exs b/lib/elixir/test/elixir/kernel/cli_test.exs index faa532a34fe..fbb3afc89ed 100644 --- a/lib/elixir/test/elixir/kernel/cli_test.exs +++ b/lib/elixir/test/elixir/kernel/cli_test.exs @@ -79,7 +79,7 @@ defmodule Kernel.CLITest do assert output =~ "hello_world123" # Check for exclamation mark handling on Windows - assert {_output, 0} = System.cmd(elixir_executable(), ["-e", "URI.new!(~s())"]) + assert {_output, 0} = System.cmd(elixir_executable(), ["-e", "URI.new!(~s||)"]) {output, 0} = System.cmd(iex_executable(), ["-e", "IO.puts :hello_world123; System.halt()"]) assert output =~ "hello_world123"