Несколько операций поиска и замены в одном пакете - PullRequest
0 голосов
/ 21 мая 2019

Мне нужно сделать несколько операций поиска и замены для одного файла.Настройка выглядит следующим образом:

Текстовые данные - File.txt Данные о замене - File2.txt

Структура File2.txt выглядит следующим образом:

ABC,XYZ
MNB,OPI
GHI,TRY

Первый столбец - мое оригинальное имя (например, ABC) и заменен вторым именем (например, XYZ).Это должно быть сделано в оригинальном файле File.txt

. Я могу написать код, чтобы сделать одно изменение или увеличить имя с ABC на ABC_Date, но я не совсем понимаю, как выполнять цикл и читать как из, так и изимена.

Любая помощь приветствуется.

Мне удалось решить эту проблему путем склеивания ответов из: Как найти и заменить текст в файле, используя среду командной строки Windows?

Как перебрать каждую строку в текстовом файле с помощью пакетного файла Windows?

Код:

for /F "tokens=1,2,3" %%i in (myfile.txt) do call :process %%i %%j %%k
goto thenextstep
:process
@echo %1
@echo %2
cscript replace.vbs "C:\newfile.txt" "%1" "%2"
goto :EOF

replace.vbs

Const ForReading = 1    
Const ForWriting = 2

strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close

strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText  'WriteLine adds extra CR/LF
objFile.Close

1 Ответ

0 голосов
/ 21 мая 2019

Здесь приведен пример кода PowerShell для замены нескольких слов из другого файла. Вы должны изменить значение $file1Text и значение $file2Text

$file1Text = "this is sample text. You have to get the text from file" ; # your file1 data
$file2Text = "this,here it","text,data","file,physical file" # your file2 lines

$finalText = $file1Text ; # Temp variable [ optional ] : you can use file1Text directly

foreach ($str in $file2Text)
{
    $split = $str.Split(',')
    $find =  $split[0]
    $replace =  $split[1]

    $finalText = $finalText.Replace($find,$replace)    
}

cls

"Original Text :  " + $file1Text
"Replaced Text : " + $finalText
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...