【问题标题】:Batch: Fill array by text file with escaped characters批处理:使用转义字符通过文本文件填充数组
【发布时间】:2017-09-01 07:08:01
【问题描述】:

我有两个数组要从一个文本文件中填充。一种带有 UTF-8 变音符号,一种带有转义字符。

all_headings_html_umlauts_escaped.txt
^&Uuml^;berblick
^&Auml^;pfel
^&Ouml^;sterreich

all_headings_utf8_umlauts.txt
Überblick
Äpfel
Österreich

我的批处理文件:

@echo off
:: Build array to iterate through
set /A n=0
for /F "usebackq delims=" %%a in ("all_headings_utf8_umlauts.txt") do (
    set /A n+=1
REM call echo %%n%%
    call set arrayutfeight[%%n%%]=%%a
    call set o=%%n%%
)


for /L %%i in (1,1,%o%) do call echo %%arrayutfeight[%%i]%%
pause

:: Build arrayy to iterate through
set /A p=0
for /F "usebackq delims=" %%b in ("all_headings_html_umlauts_escaped.txt") do (
    set /A p+=1
REM call echo %%k%%
    call set arrayhtmlescaped[%%p%%]=%%b
    call set q=%%p%%
)


for /L %%i in (1,1,%q%) do call echo %%arrayhtmlescaped[%%i]%%
pause

第一个数组的输出效果很好,应该是这样,但第二个数组的输出是“ECHO 关闭”的三倍。 任何想法为什么以及如何解决这个问题?我真的需要从数组 ^&Uuml^;berblick...作为我的批处理文件中的输出...

韩语 标记

【问题讨论】:

    标签: html arrays batch-file utf-8 escaping


    【解决方案1】:

    在批处理文件中,^ 插入字符的管理很复杂。在某些情况下,当这样的字符出现在一行中时,它就会被复制。通过这种方式,call set "arrayhtmlescaped[%%p%%]=%%b" 行在文件中为每个字符存储 两个 插入符号,因此必须删除额外的插入符号。最简单的方法是使用延迟扩展,但在echo 命令中,插入符号被放置在引号之外,因此有必要转义每个插入符号一个。

    @echo off
    setlocal EnableDelayedExpansion
    
    :: Build arrayy to iterate through
    set /A p=0
    for /F "usebackq delims=" %%b in ("all_headings_html_umlauts_escaped.txt") do (
        set /A p+=1
    REM call echo %%k%%
        call set "arrayhtmlescaped[%%p%%]=%%b"
        call set q=%%p%%
    )
    
    for /L %%i in (1,1,%q%) do echo !arrayhtmlescaped[%%i]:^^^^=^^!
    pause
    

    【讨论】:

      猜你喜欢
      • 2012-06-15
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      • 2023-03-20
      • 2018-11-11
      • 1970-01-01
      相关资源
      最近更新 更多