codechurn
codechurn

Reputation: 3970

Is it possible to pass a variable with an & as a parameter in a batch file

I would like to pass the & in a value as a parameter. In the example code below, I can echo FILE_NAME successfully, but how do I pass it as a parameter to the :TEE label?

@ECHO OFF
CLS
SETLOCAL ENABLEDELAYEDEXPANSION

SET FILE_PATH=C:\TEMP\FILE^&NAME.TXT

REM THIS WORKS
ECHO !FILE_PATH!

REM THIS DOES NOT WORK
CALL :TEE !FILE_PATH!

GOTO :EOF

:TEE
FOR /F "TOKENS=*" %%Z IN ("%*") DO (
ECHO %%Z
     >  CON ECHO.%%Z
     >> "!LOG_FILE!" ECHO.%%Z
     GOTO :EOF
)
GOTO :EOF

Upvotes: 0

Views: 68

Answers (1)

Magoo
Magoo

Reputation: 80023

@ECHO OFF
CLS
SETLOCAL ENABLEDELAYEDEXPANSION

SET FILE_PATH=C:\TEMP\FILE^&NAME.TXT

REM THIS WORKS
ECHO !FILE_PATH!

REM THIS DOES NOT WORK
CALL :TEE "%FILE_PATH%"

GOTO :EOF

:TEE
FOR /F "TOKENS=* USEBACKQ" %%Z IN ('%*') DO (
ECHO %%~Z
     >  CON ECHO.%%~Z
     >> "!LOG_FILE!" ECHO.%%~Z
     GOTO :EOF
)
GOTO :EOF

Yes, it is - here's one way

Upvotes: 3

Related Questions