Windows 如何逃脱!在变量中';s值多少?
我怎样才能逃脱!延迟扩展中使用的变量PL值中的字符!PL!,这样它们就不会被解释为分隔符了 例如,在%%p包含!时修复此故障Windows 如何逃脱!在变量中';s值多少?,windows,batch-file,cmd,escaping,Windows,Batch File,Cmd,Escaping,我怎样才能逃脱!延迟扩展中使用的变量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
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
)
)
我不知道如何搜索/替换
代码>在中!瓦尔代码>(!myvar:^^!=!!
不起作用),但您可以显示代码>类似于变量:
@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
)
)
可能的副本只能用扩展百分比替换<代码>回显%myvar:=someThingElse%
@Paul感谢转置解决方案。很好。不过,有一个完整的解决方案还是有用的。感谢块重定向技术,这将有望改善我的未来,所以CMD问题:)