我怎样才能逃脱嵌入式!延迟扩展 !PL! 中使用的变量 PL 的值中的字符,这样它们就不会被解释为分隔符?
例如当 %%P 包含 ! .
FOR %%P IN (%input%\*.M3U) DO (
echo Processing playlist "%%P"
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=*" %%L IN ('type "%%P"') DO (
SET PL=%%~pP%%L
echo Processing reference "!PL!"
)
ENDLOCAL
)
编辑:Paul 的有限适用性解决方法:
FOR %%P IN (%input%\*.M3U) DO (
echo Processing playlist "%%P"
FOR /F "tokens=*" %%L IN ('type "%%P"') DO (
SET PL=%%~pP%%L
SETLOCAL ENABLEDELAYEDEXPANSION
echo Processing reference "!PL!"
ENDLOCAL
)
)
最佳答案
我不知道如何在 !var!
中搜索/替换 !
(!myvar:^^!=! !
不起作用) 但您可以在 var 中显示 !
,例如:
@echo off
(
echo !!myfolder
echo myfi!es
echo !234
)>sample.txt
for /f %%a in (sample.txt) do (
set "myvar=%%a"
setlocal enabledelayedexpansion
echo !myvar!
endlocal
)
您可以像这样转置您的代码:
for %%p in (%input%\*.m3u) do (
echo processing playlist "%%p"
for /f "tokens=*" %%l in ('type "%%p"') do (
set pl=%%~pp%%l
setlocal enabledelayedexpansion
echo processing reference "!pl!"
endlocal
)
)
关于windows - 怎么逃!在变量的值中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32939109/