提问人:fortissimo 提问时间:12/18/2022 最后编辑:Ken Whitefortissimo 更新时间:12/18/2022 访问量:78
试图回显/重定向/附加一个变量值,该变量值中包含&和空格,而没有引号,这会把事情搞砸
Trying to echo/redirect/append a variable value that has & and spaces in it without the quotes messing things up
问:
在批处理文件中,假设 %PageName% 的值为:
This & That
和 %FolderName%:
Stuff & Junk
我希望能够回显以下行并将其附加到 HTML 文件中。该行的扩展或“呈现”形式在 HTML 文件中如下所示:
<li> <a href="Stuff & Junk/This & That.html">This & That</a></li>
当然,在理想情况下,我只需在批处理文件中键入此内容即可生成此结果:
echo <li> <a href="Stuff & Junk/This & That.html">This & That</a></li> >> "Stuff & Junk/index.html"
但当然,这并不是一个完美的世界,在变量中存储与号和空格会让一切变得头疼十亿倍。我试过了:
echo ^<li^> ^<a href="%FolderName%"/"%PageName%".html^>"%PageName%"^</a^>^</li^> >> "%FolderName%\index.html"
这会将以下文本追加到 index.html 文件:
<li> <a href="Stuff & Junk"/"This & That".html>"This & That"</a></li>
...这太可怕了,因为引号搞砸了一切。但是,如果我去掉引号,我就会出现语法错误,因为与号将行分解为多个命令。我被困在岩石和坚硬的地方之间。有没有解决方案?
答:
1赞
Magoo
12/18/2022
#1
@ECHO Off
SETLOCAL
SET "pagename=This & That"
SET "foldername=Stuff & Junk"
FOR /f "delims=" %%e IN ("%pagename%") DO FOR /f "delims=" %%y IN ("%foldername%") DO ECHO ^<li^> ^<a href="%%y%%e.html"^>%%y^</a^>^</li^>
GOTO :EOF
诀窍是将笨拙的字符串分配给一个元变量 (),之前的结果有机会弄清楚发生了什么......%%e/%%y
echo
cmd
评论
0赞
fortissimo
12/18/2022
天哪,天哪,给贝茜全能的莫利鳄梨酱!这是我能想到的唯一适合您的解决方案的短语......使用嵌套的 1-item for 循环使 CMD 做一些它不想做的事情。我必须承认,对于所有智商低于 7,590 的人来说,这基本上是不可能的,我感觉好多了。谢谢你,roo times two,Magoo!(roo,因为你在澳大利亚......
评论
(echo ^<li^>^<a href="%FolderName%/%PageName%.html"^>%PageName:&=^&%^</a^>^</li^>) >> "%FolderName%/index.html"