【问题标题】:How to concatenate 2 strings in .bat?如何在.bat中连接2个字符串?
【发布时间】:2019-03-16 17:34:16
【问题描述】:

我尝试使用 pandoc 将我的所有 wiki 导出到 .docx 文件中。所以我创建了一个 .bat 脚本。我有一个文件,其中包含我要导出的所有网址“liste_de_documents.txt”,每行包含一个字符串,例如:

hadoop:hadoop_-_hdfs_-_afficher_les_fichiers_avec_un_replica_inferieur_a_3
certificats:certificats_-_faq

我有这个变量:

set "url=http://localhost:8800/doku.php?id="

我尝试导出我的文档,我需要连接这两个变量,但我总是得到一个空变量 %downloadurl% 作为结果:

setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (liste_de_documents.txt) do (
    set downloadurl="%url%%%A"
    ECHO %url%
    ECHO %%A
    ECHO %downloadurl%
    ::C:\Z_owncloud\Logiciels_portables\Logiciels_portables_installes\pandoc-2.3-windows-x86_64\pandoc.exe -f html  "%url%%%A"  -o "C:\Users\user\Downloads\EXPORT_AUTOMATIQUE_DE_LA_DOC_DU_WIKI\%downloadurl%.docx"


)

请问如何将我的变量 %url% 和 %%A 连接到 %downloadurl% 中?

问候,

一个。

【问题讨论】:

  • 这个论坛上最常见的问题之一。见stackoverflow.com/questions/19121138/…
  • 在这种情况下,延迟扩展并不是真正需要的。只要在每次迭代中 FOR 执行的命令块中当前使用 %downloadurl% 的地方使用 %url%%%A。并阅读Why is no string output with 'echo %var%' after using 'set var = text' on command line? 上的答案,解释set variable="value"set "variable=value" 之间的区别。后者通常是错误的,在发布的代码中也是如此。
  • 同意@Mofi 的建议最适合这种情况。您应该查看我发布的链接,以了解您编码失败的原因。
  • 并且不要使用双冒号作为括号代码块内的注释。您将在代码执行中得到不希望的结果。

标签: windows batch-file pandoc


【解决方案1】:

好的,谢谢,我确实在使用 setlocal enabledelayedexpansion,但我没有将 %variable% 替换为 !variable! .所以现在这段代码可以工作了:

set "downloadurl=!url!%%A"

谢谢!

一个。

【讨论】:

    猜你喜欢
    • 2011-02-07
    • 2018-03-13
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多