我搜索了一种传递字符串中的特殊字符的方法,但找不到任何相关内容。目前,字符串在第一个特殊字符处连接。
for /D /R "%cd%" %%d IN (*) do (call :Write_File "%%~nd")
可以使用转义字符,还是需要for循环替换特殊字符,而另一个替换它们?
该变量应该返回文件夹名称。它返回全长字符串,除非它包含特殊字符%,&,,,,等。 此时它将返回所有内容直至该点。示例B& B返回B,其中我要求它返回B& B。
有三个名为“%$”,“01,复制”和03&
的示例文件夹在读取变量时回显变量(&& echo“%% ~nd”):“$%”,“01,复制”并错过第三个 重命名变量:Write_File(设置“FOLDER =%~1”):“$”,“01,复制”
编辑以澄清:
特殊字符:%,$,&,*,〜等等
使用:回显文件夹名称时 有时它会错过特殊字符,有时会完全跳过文件夹。
答案 0 :(得分:1)
您不能在此处使用CALL
值,而是使用对变量的引用。
for /D /R %%d IN (*) do (
set "myDir=%%~nd"
call :Write_File myDir
)
exit /b
:Write_File
setlocal EnableDelayedExpansion
set "param1=!%1!"
echo !param1!
endlocal
exit /b