I have a batch file that receive a path as first argument. The path is always composed with specials characters like ^
,é
or è
.
The
You need to escape it twice - once when you input the path as an argument to the batch script, and again when echo'ing it:
caret_input.bat:
echo %1
Double-escaped (notice how it's already escaped when the batch file starts outputting):
C:\>caret_input.bat my\path^^^^is\special
C:\>echo my\path^is\special
my\path^is\special
If you were to use a string with a special character inside the batch file, your method of escaping it just once would work just fine:
caret_escape.bat:
echo my\path^^is\special
and the output
C:\>echo my\path^is\special
my\path^is\special
You need to escape the caret signs at the command line or better put the path into quotes.
In both cases you should work with delayed expansion, as then the content will not be modified when it is expanded.
myBatch "C:\LASTNAME^Firstname\image"
or
myBatch C:\LASTNAME^^Firstname\image
And in your batch use swomething like this
@echo off
set "arg1=%~1"
setlocal EnableDelayedExpansion
echo !arg1!