2

我正在尝试在 CSV 或 XLS 文件的第一列中查找单词,并将它们替换为 XLS 的 CSV 第二列中的单词。我做了类似的东西,但它不起作用。

你能帮助我吗?对于每一行,第一列在一个名为 ita 的变量中,第二列在一个名为 eng 的变量中,然后找到 Ita 并替换 Eng。你可以想象我需要翻译一个网页,从 csv 开始,每列都有一种语言。我的 csv 文件结构是:

ita1;eng1
ita2;eng2

ETC...

这是我的错误脚本:

@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"
    )
  )
)
4

3 回答 3

1
(for /f "tokens=1,2 delims=;" %%a in (index.csv) do echo(%%b;%%a)>index2.txt
type index2.txt
于 2013-11-08T00:43:23.587 回答
0

尝试使用awk

awk -F';' 'NR==FNR {a[$1]=$2;next} { for(x in a) gsub(x,a[x]) } 1' index.csv index.txt
于 2013-11-10T15:12:42.183 回答
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

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

于 2013-11-08T07:30:36.857 回答