Escape special character in a windows batch

前端 未结 2 1018
陌清茗
陌清茗 2021-01-23 20:06

I have a batch file that receive a path as first argument. The path is always composed with specials characters like ^,é or è.

The

相关标签:
2条回答
  • 2021-01-23 20:20

    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
    
    0 讨论(0)
  • 2021-01-23 20:22

    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!
    
    0 讨论(0)
提交回复
热议问题