Что нового

[Данные, строки] Преобразование данных из нескольких разных INI в один

AtoS

Новичок
Сообщения
57
Репутация
2
Доброго времени суток! Колллеги, предо мной возникла проблема: существует несколько INI с одинаковыми названиями(например, cash.ini), которые расположены по разным директориям(например, C:\vol1\cassa1, C:\vol1\cassa2, C:\vol1\cassa3) с ключом ipaddr = 127 0 0 1. Как считать данные из всех INI и записать в единый INI-файл(например, ключ cassa1 = 127.0.0.1, cassa2 = 127.0.0.2, cassa3 = 127.0.0.3) с преобразованием ключа из ipaddr = 127 0 0 1 в ipaddr = 127.0.0.1?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
AtoS
У меня так получилось:
Код:
#include <File.au3>

$fileNew = @ScriptDir & "\Newcash.ini"
$path = @HomeDrive & "\vol1"
$file = "cash.ini"
$aPath = _FileListToArray($path, "*", 2)
For $i = 1 To UBound($aPath) - 1
	If FileExists($path & "\" & $aPath[$i] & "\" & $file) Then
		$var = IniRead($path & "\" & $aPath[$i] & "\" & $file, "section", "ipaddr", "")
		If $var <> "" Then
			$var = StringReplace($var, " ", ".")
			$var = StringReplace($var, StringLen($var), StringRight($aPath[$i], 1))
			IniWriteSection($fileNew, $aPath[$i], "ipaddr=" & $var)
		EndIf
	EndIf
Next
 
Автор
A

AtoS

Новичок
Сообщения
57
Репутация
2
madmasles сказал(а):
AtoS
У меня так получилось:
Код:
#include <File.au3>

$fileNew = @ScriptDir & "\Newcash.ini"
$path = @HomeDrive & "\vol1"
$file = "cash.ini"
$aPath = _FileListToArray($path, "*", 2)
For $i = 1 To UBound($aPath) - 1
	If FileExists($path & "\" & $aPath[$i] & "\" & $file) Then
		$var = IniRead($path & "\" & $aPath[$i] & "\" & $file, "section", "ipaddr", "")
		If $var <> "" Then
			$var = StringReplace($var, " ", ".")
			$var = StringReplace($var, StringLen($var), StringRight($aPath[$i], 1))
			IniWriteSection($fileNew, $aPath[$i], "ipaddr=" & $var)
		EndIf
	EndIf
Next
Спасибо за помощь, но в вашем варианте была одна маленькая проблема - ваш скрипт преобразоввывал Ip-адрес с 192.168.1.1 в 192.168.1.2, я это подправил.
Код:
#include <File.au3>

$fileNew = @ScriptDir & "\Newcash.ini"
$path = "D:\test\AutoITTest\For KKM"
$file = "protocol.ini"
$aPath = _FileListToArray($path, "*", 2)
For $i = 1 To UBound($aPath) - 1
    If FileExists($path & "\" & $aPath[$i] & "\" & $file) Then
        $var1 = IniRead($path & "\" & $aPath[$i] & "\" & $file, "tcpip", "ipaddr0", "")
        If $var1 <> "" Then
            $var2 = StringReplace($var1, " ", ".")
            $var3 = StringReplace($var2,$var1, $aPath[$i])
            IniWriteSection($fileNew, $aPath[$i], "ipaddr=" & $var3)
        EndIf
    EndIf
Next

Благодарю за неоценимую помощь!
 
Автор
A

AtoS

Новичок
Сообщения
57
Репутация
2
madmasles сказал(а):
AtoS [?]
и записать в единый INI-файл(например, ключ cassa1 = 127.0.0.1, cassa2 = 127.0.0.2, cassa3 = 127.0.0.3
Это Ваше тех.задание?
Да может я немного неправильно изъяснился, но все равно спасибо вам за помощь, без нее я бы не справился!
 
Верх