从CSV文件中查找和替换TXT中的内容

3
我将尝试找到CSV或XLS文件的第一列中的单词,并用CSV或XLS第二列中的单词替换它们。我已经做了类似的事情,但它并不起作用。
你能帮助我吗?对于每一行,第一列在一个名为ita的变量中,第二列在一个名为eng的变量中,然后查找Ita并替换为Eng。正如你所想象的那样,我需要翻译一个网页,从每一列的语言开始,以CSV文件结构为基础。
ita1;eng1
ita2;eng2

这是我的错误脚本:
@echo off
setlocal enableextensions enabledelayedexpansion
set host=%COMPUTERNAME%
echo Host: %host%
pause
for /f "tokens=1 delims=;" %%Ita in (index.csv) do (
  SET ita=%%Ita
  echo %ita%
  pause
  for /f "tokens=2 delims=;" %%eng in (index.csv) do (
    set eng=%%eng
    echo %eng
    pause
    (for /f "delims=" %%i in ('findstr /n "^" "index.txt"') do (
      set "transl=%%i"
      set "transl=!line:%ita%=%eng%!"
      echo(!line!
        endlocal
      ))>"index2.txt"
    type "index2.txt"
    )
  )
)

你的for循环中有语法错误。%%Ita和%%Eng只能是单个字符。请用%%I和%%E替换它们。 - Andrew - OpenGeoCode
3个回答

1
(for /f "tokens=1,2 delims=;" %%a in (index.csv) do echo(%%b;%%a)>index2.txt
type index2.txt

抱歉,我不明白应该把它放在哪里。它并不涉及到 index.txt 中查找和替换文本的问题。 - BigBlack

0

尝试使用 awk

awk -F';' 'NR==FNR {a[$1]=$2;next} { for(x in a) gsub(x,a[x]) } 1' index.csv index.txt

0
@echo off
    setlocal enableextensions enabledelayedexpansion

    (for /f "tokens=* usebackq" %%l in ("index.txt") do (
        set "line=%%l"
        for /f "tokens=1,2 delims=; usebackq" %%a in ("index.csv") do (
            set "line=!line:%%a=%%b!"
        )
        echo !line!
    )) > index2.txt

但是这种方法并不关心子字符串匹配。


我的 HTML 代码运作不好。你知道为什么吗?我使用了一个批处理脚本来编译我的照片库。当脚本完成后,它会为一个 Jpg 文件创建类似于“file_name .jpg”的东西……这可能是由该脚本引起的吗?我该如何解决这个问题? - BigBlack
没有足够的数据来回答。您能提供您的html、index.txt和index.csv的样本吗? - MC ND

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接