CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Аватара пользователя
Aleks911tat

CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение Aleks911tat »

Добрый день, обращаюсь к знающим людям в области программирования, вручную конечно можно но там около 10000 значений надо будет копипастить.



Нужно в файле 1.txt заменить значение 76868238 значением из 2.txt 76561198037133966,

следовательно значение 9818504 заменить на 76561197970084232 и т.д.




1.txt


[76868238 StatsObject]

PlayerName=Moskov

PlayerIP=0

SelectedVeterancy=0

SelectedChar=

ClanName=

DamageHealedStat=0

WeldingPointsStat=0

ShotgunDamageStat=0

HeadshotKillsStat=2

StalkerKillsStat=0

BullpupDamageStat=0

MeleeDamageStat=0

FlameThrowerDamageStat=0

SelfHealsStat=0

SoleSurvivorWavesStat=0

CashDonatedStat=0

FeedingKillsStat=0

BurningCrossbowKillsStat=0

GibbedFleshpoundsStat=0

StalkersKilledWithExplosivesStat=0

GibbedEnemiesStat=0

BloatKillsStat=0

SirenKillsStat=0

KillsStat=3

ExplosivesDamageStat=0

TotalPlayTime=581

WinsCount=0

LostsCount=1

MeleeGoreFastKillsStat=0

MeleeScrakeKillsStat=0

MeleeFleshPoundKillsStat=0

HeadShotHuskKillsStat=0

HeadShotFleshPoundKillsStat=0

HeadShotMeatPounderKillsStat=0

BurnedCrawlersStat=0

BurnedBloatsStat=0

BurnedFleshPoundsStat=0

ShotgunedBrutesStat=0

ShotgunedFleshPoundsStat=0

BullpupSirenKillsStat=0

BullpupFleshPoundKillsStat=0

PoisonedDamageStat=0

PipeBombDamageStat=0

BlownUpFleshPoundsStat=0

TotalZedTimeStat=0.000000



[9818504 StatsObject]

PlayerName=London

PlayerIP=0

SelectedVeterancy=0

SelectedChar=

ClanName=

DamageHealedStat=0

WeldingPointsStat=0

ShotgunDamageStat=0

HeadshotKillsStat=1

StalkerKillsStat=0

BullpupDamageStat=0

MeleeDamageStat=259

FlameThrowerDamageStat=0

SelfHealsStat=1

SoleSurvivorWavesStat=0

CashDonatedStat=0

FeedingKillsStat=0

BurningCrossbowKillsStat=0

GibbedFleshpoundsStat=0

StalkersKilledWithExplosivesStat=0

GibbedEnemiesStat=0

BloatKillsStat=0

SirenKillsStat=0

KillsStat=2

ExplosivesDamageStat=0

TotalPlayTime=654

WinsCount=0

LostsCount=0

MeleeGoreFastKillsStat=0

MeleeScrakeKillsStat=0

MeleeFleshPoundKillsStat=0

HeadShotHuskKillsStat=0

HeadShotFleshPoundKillsStat=0

HeadShotMeatPounderKillsStat=0

BurnedCrawlersStat=0

BurnedBloatsStat=0

BurnedFleshPoundsStat=0

ShotgunedBrutesStat=0

ShotgunedFleshPoundsStat=0

BullpupSirenKillsStat=0

BullpupFleshPoundKillsStat=0

PoisonedDamageStat=0

PipeBombDamageStat=0

BlownUpFleshPoundsStat=0

TotalZedTimeStat=0.000000





2.txt


[76561198037133966]

Moskov=0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,581,0,1



[76561197970084232]

London=0,0,0,0,1,0,0,259,0,1,0,0,0,0,0,0,0,0,0,2,0,0,654,0,0
Аватара пользователя
Aleks911tat

Re: CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение Aleks911tat »

Первое значение в 1.txt первым со 2.txt и т.д.

76868238 на 76561198037133966

9818504 на 76561197970084232



В первом файле значение которое надо заменить находится через каждые 47 строк , во втором через две.
Аватара пользователя
Aleks911tat

Re: CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение Aleks911tat »

Aleks911tat

Лучше один раз увидеть... небольшой пример того, что должно получиться и уж тогда может быть...
Аватара пользователя
lchou

Re: CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение lchou »

оригинал 1.txt


[76868238 StatsObject]

PlayerName=Moskov

PlayerIP=0

SelectedVeterancy=0

SelectedChar=

ClanName=

DamageHealedStat=0

WeldingPointsStat=0

ShotgunDamageStat=0

HeadshotKillsStat=2

StalkerKillsStat=0

BullpupDamageStat=0

MeleeDamageStat=0

FlameThrowerDamageStat=0

SelfHealsStat=0

SoleSurvivorWavesStat=0

CashDonatedStat=0

FeedingKillsStat=0

BurningCrossbowKillsStat=0

GibbedFleshpoundsStat=0

StalkersKilledWithExplosivesStat=0

GibbedEnemiesStat=0

BloatKillsStat=0

SirenKillsStat=0

KillsStat=3

ExplosivesDamageStat=0

TotalPlayTime=581

WinsCount=0

LostsCount=1

MeleeGoreFastKillsStat=0

MeleeScrakeKillsStat=0

MeleeFleshPoundKillsStat=0

HeadShotHuskKillsStat=0

HeadShotFleshPoundKillsStat=0

HeadShotMeatPounderKillsStat=0

BurnedCrawlersStat=0

BurnedBloatsStat=0

BurnedFleshPoundsStat=0

ShotgunedBrutesStat=0

ShotgunedFleshPoundsStat=0

BullpupSirenKillsStat=0

BullpupFleshPoundKillsStat=0

PoisonedDamageStat=0

PipeBombDamageStat=0

BlownUpFleshPoundsStat=0

TotalZedTimeStat=0.000000



[9818504 StatsObject]

PlayerName=London

PlayerIP=0

SelectedVeterancy=0

SelectedChar=

ClanName=

DamageHealedStat=0

WeldingPointsStat=0

ShotgunDamageStat=0

HeadshotKillsStat=1

StalkerKillsStat=0

BullpupDamageStat=0

MeleeDamageStat=259

FlameThrowerDamageStat=0

SelfHealsStat=1

SoleSurvivorWavesStat=0

CashDonatedStat=0

FeedingKillsStat=0

BurningCrossbowKillsStat=0

GibbedFleshpoundsStat=0

StalkersKilledWithExplosivesStat=0

GibbedEnemiesStat=0

BloatKillsStat=0

SirenKillsStat=0

KillsStat=2

ExplosivesDamageStat=0

TotalPlayTime=654

WinsCount=0

LostsCount=0

MeleeGoreFastKillsStat=0

MeleeScrakeKillsStat=0

MeleeFleshPoundKillsStat=0

HeadShotHuskKillsStat=0

HeadShotFleshPoundKillsStat=0

HeadShotMeatPounderKillsStat=0

BurnedCrawlersStat=0

BurnedBloatsStat=0

BurnedFleshPoundsStat=0

ShotgunedBrutesStat=0

ShotgunedFleshPoundsStat=0

BullpupSirenKillsStat=0

BullpupFleshPoundKillsStat=0

PoisonedDamageStat=0

PipeBombDamageStat=0

BlownUpFleshPoundsStat=0

TotalZedTimeStat=0.000000





оригинал 2.txt


[76561198037133966]

Moskov=0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,581,0,1



[76561197970084232]

London=0,0,0,0,1,0,0,259,0,1,0,0,0,0,0,0,0,0,0,2,0,0,654,0,0







конечный файл .txt


[76561198037133966 StatsObject]

PlayerName=Moskov

PlayerIP=0

SelectedVeterancy=0

SelectedChar=

ClanName=

DamageHealedStat=0

WeldingPointsStat=0

ShotgunDamageStat=0

HeadshotKillsStat=2

StalkerKillsStat=0

BullpupDamageStat=0

MeleeDamageStat=0

FlameThrowerDamageStat=0

SelfHealsStat=0

SoleSurvivorWavesStat=0

CashDonatedStat=0

FeedingKillsStat=0

BurningCrossbowKillsStat=0

GibbedFleshpoundsStat=0

StalkersKilledWithExplosivesStat=0

GibbedEnemiesStat=0

BloatKillsStat=0

SirenKillsStat=0

KillsStat=3

ExplosivesDamageStat=0

TotalPlayTime=581

WinsCount=0

LostsCount=1

MeleeGoreFastKillsStat=0

MeleeScrakeKillsStat=0

MeleeFleshPoundKillsStat=0

HeadShotHuskKillsStat=0

HeadShotFleshPoundKillsStat=0

HeadShotMeatPounderKillsStat=0

BurnedCrawlersStat=0

BurnedBloatsStat=0

BurnedFleshPoundsStat=0

ShotgunedBrutesStat=0

ShotgunedFleshPoundsStat=0

BullpupSirenKillsStat=0

BullpupFleshPoundKillsStat=0

PoisonedDamageStat=0

PipeBombDamageStat=0

BlownUpFleshPoundsStat=0

TotalZedTimeStat=0.000000



[76561197970084232 StatsObject]

PlayerName=London

PlayerIP=0

SelectedVeterancy=0

SelectedChar=

ClanName=

DamageHealedStat=0

WeldingPointsStat=0

ShotgunDamageStat=0

HeadshotKillsStat=1

StalkerKillsStat=0

BullpupDamageStat=0

MeleeDamageStat=259

FlameThrowerDamageStat=0

SelfHealsStat=1

SoleSurvivorWavesStat=0

CashDonatedStat=0

FeedingKillsStat=0

BurningCrossbowKillsStat=0

GibbedFleshpoundsStat=0

StalkersKilledWithExplosivesStat=0

GibbedEnemiesStat=0

BloatKillsStat=0

SirenKillsStat=0

KillsStat=2

ExplosivesDamageStat=0

TotalPlayTime=654

WinsCount=0

LostsCount=0

MeleeGoreFastKillsStat=0

MeleeScrakeKillsStat=0

MeleeFleshPoundKillsStat=0

HeadShotHuskKillsStat=0

HeadShotFleshPoundKillsStat=0

HeadShotMeatPounderKillsStat=0

BurnedCrawlersStat=0

BurnedBloatsStat=0

BurnedFleshPoundsStat=0

ShotgunedBrutesStat=0

ShotgunedFleshPoundsStat=0

BullpupSirenKillsStat=0

BullpupFleshPoundKillsStat=0

PoisonedDamageStat=0

PipeBombDamageStat=0

BlownUpFleshPoundsStat=0

TotalZedTimeStat=0.000000
Аватара пользователя
lchou

Re: CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение lchou »

Попробуйте вот это на VBS:



Код:

Код: Выделить всё

Option Explicit
Dim fso, vStreamSrc1, vStreamSrc2, vStreamDest
Dim strLine1, strLine2, strSrc1, strSrc2
Const FILE_SRC1 = "R:\1.txt"  'что менять
Const FILE_SRC2 = "R:\2.txt"  'откуда брать замену
Const FILE_DEST = "R:\3.txt"  'куда сохранить
Function Between(strWhereSearch, strLeftString, strRightString)
	Dim pos1, pos2
	pos1 = InStr(1, strWhereSearch, strLeftString, vbTextCompare)
	If pos1 Then
		pos2 = InStr(pos1 + 1, strWhereSearch, strRightString, vbTextCompare)
		If pos2 Then
			Between = Mid(strWhereSearch, pos1 + 1, pos2 - pos1 - 1)
			Exit Function
		End If
	End If
	Between = ""
End Function
Set fso = CreateObject("Scripting.FileSystemObject")
Set vStreamSrc1 = fso.OpenTextFile(FILE_SRC1, 1, False, 0)
Set vStreamSrc2 = fso.OpenTextFile(FILE_SRC2, 1, False, 0)
Set vStreamDest = fso.OpenTextFile(FILE_DEST, 2, True, 0)
While Not vStreamSrc1.AtEndOfStream
	strLine1 = vStreamSrc1.ReadLine
	strSrc1 = Between(strLine1, "[", " StatsObject]")
	If strSrc1  "" Then
		strSrc2 = ""
		While (Not vStreamSrc2.AtEndOfStream) And (strSrc2 = "")
			strLine2 = vStreamSrc2.ReadLine
			strSrc2 = Between(strLine2, "[", "]")
		Wend
		If strSrc2  "" Then
			vStreamDest.WriteLine Replace(strLine1, strSrc1, strSrc2, 1, 1, vbTextCompare)
		Else
			vStreamDest.WriteLine strLine1
		End If
	Else
		vStreamDest.WriteLine strLine1
	End If
Wend
vStreamSrc1.Close
vStreamSrc2.Close
vStreamDest.Close
MsgBox "OK"
Аватара пользователя
Aleks911tat

Re: CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение Aleks911tat »

Значения не перенеслись


Результат отработки скрипта


[76868238 StatsObject]

਍倀氀愀礀攀爀一愀洀攀㴀䴀漀猀欀漀瘀ഀഀ

PlayerIP=0

਍匀攀氀攀挀琀攀搀嘀攀琀攀爀愀渀挀礀㴀 ഀഀ

SelectedChar=

਍䌀氀愀渀一愀洀攀㴀ഀഀ

DamageHealedStat=0

਍圀攀氀搀椀渀最倀漀椀渀琀猀匀琀愀琀㴀 ഀഀ

ShotgunDamageStat=0

਍䠀攀愀搀猀栀漀琀䬀椀氀氀猀匀琀愀琀㴀㈀ഀഀ

StalkerKillsStat=0

਍䈀甀氀氀瀀甀瀀䐀愀洀愀最攀匀琀愀琀㴀 ഀഀ

MeleeDamageStat=0

਍䘀氀愀洀攀吀栀爀漀眀攀爀䐀愀洀愀最攀匀琀愀琀㴀 ഀഀ

SelfHealsStat=0

਍匀漀氀攀匀甀爀瘀椀瘀漀爀圀愀瘀攀猀匀琀愀琀㴀 ഀഀ

CashDonatedStat=0

਍䘀攀攀搀椀渀最䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

BurningCrossbowKillsStat=0

਍䜀椀戀戀攀搀䘀氀攀猀栀瀀漀甀渀搀猀匀琀愀琀㴀 ഀഀ

StalkersKilledWithExplosivesStat=0

਍䜀椀戀戀攀搀䔀渀攀洀椀攀猀匀琀愀琀㴀 ഀഀ

BloatKillsStat=0

਍匀椀爀攀渀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

KillsStat=3

਍䔀砀瀀氀漀猀椀瘀攀猀䐀愀洀愀最攀匀琀愀琀㴀 ഀഀ

TotalPlayTime=581

਍圀椀渀猀䌀漀甀渀琀㴀 ഀഀ

LostsCount=1

਍䴀攀氀攀攀䜀漀爀攀䘀愀猀琀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

MeleeScrakeKillsStat=0

਍䴀攀氀攀攀䘀氀攀猀栀倀漀甀渀搀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

HeadShotHuskKillsStat=0

਍䠀攀愀搀匀栀漀琀䘀氀攀猀栀倀漀甀渀搀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

HeadShotMeatPounderKillsStat=0

਍䈀甀爀渀攀搀䌀爀愀眀氀攀爀猀匀琀愀琀㴀 ഀഀ

BurnedBloatsStat=0

਍䈀甀爀渀攀搀䘀氀攀猀栀倀漀甀渀搀猀匀琀愀琀㴀 ഀഀ

ShotgunedBrutesStat=0

਍匀栀漀琀最甀渀攀搀䘀氀攀猀栀倀漀甀渀搀猀匀琀愀琀㴀 ഀഀ

BullpupSirenKillsStat=0

਍䈀甀氀氀瀀甀瀀䘀氀攀猀栀倀漀甀渀搀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

PoisonedDamageStat=0

਍倀椀瀀攀䈀漀洀戀䐀愀洀愀最攀匀琀愀琀㴀 ഀഀ

BlownUpFleshPoundsStat=0

਍吀漀琀愀氀娀攀搀吀椀洀攀匀琀愀琀㴀 ⸀      ഀഀ



਍嬀㤀㠀㄀㠀㔀 㐀 匀琀愀琀猀伀戀樀攀挀琀崀ഀഀ

PlayerName=London

਍倀氀愀礀攀爀䤀倀㴀 ഀഀ

SelectedVeterancy=0

਍匀攀氀攀挀琀攀搀䌀栀愀爀㴀ഀഀ

ClanName=

਍䐀愀洀愀最攀䠀攀愀氀攀搀匀琀愀琀㴀 ഀഀ

WeldingPointsStat=0

਍匀栀漀琀最甀渀䐀愀洀愀最攀匀琀愀琀㴀 ഀഀ

HeadshotKillsStat=1

਍匀琀愀氀欀攀爀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

BullpupDamageStat=0

਍䴀攀氀攀攀䐀愀洀愀最攀匀琀愀琀㴀㈀㔀㤀ഀഀ

FlameThrowerDamageStat=0

਍匀攀氀昀䠀攀愀氀猀匀琀愀琀㴀㄀ഀഀ

SoleSurvivorWavesStat=0

਍䌀愀猀栀䐀漀渀愀琀攀搀匀琀愀琀㴀 ഀഀ

FeedingKillsStat=0

਍䈀甀爀渀椀渀最䌀爀漀猀猀戀漀眀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

GibbedFleshpoundsStat=0

਍匀琀愀氀欀攀爀猀䬀椀氀氀攀搀圀椀琀栀䔀砀瀀氀漀猀椀瘀攀猀匀琀愀琀㴀 ഀഀ

GibbedEnemiesStat=0

਍䈀氀漀愀琀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

SirenKillsStat=0

਍䬀椀氀氀猀匀琀愀琀㴀㈀ഀഀ

ExplosivesDamageStat=0

਍吀漀琀愀氀倀氀愀礀吀椀洀攀㴀㘀㔀㐀ഀഀ

WinsCount=0

਍䰀漀猀琀猀䌀漀甀渀琀㴀 ഀഀ

MeleeGoreFastKillsStat=0

਍䴀攀氀攀攀匀挀爀愀欀攀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

MeleeFleshPoundKillsStat=0

਍䠀攀愀搀匀栀漀琀䠀甀猀欀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

HeadShotFleshPoundKillsStat=0

਍䠀攀愀搀匀栀漀琀䴀攀愀琀倀漀甀渀搀攀爀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

BurnedCrawlersStat=0

਍䈀甀爀渀攀搀䈀氀漀愀琀猀匀琀愀琀㴀 ഀഀ

BurnedFleshPoundsStat=0

਍匀栀漀琀最甀渀攀搀䈀爀甀琀攀猀匀琀愀琀㴀 ഀഀ

ShotgunedFleshPoundsStat=0

਍䈀甀氀氀瀀甀瀀匀椀爀攀渀䬀椀氀氀猀匀琀愀琀㴀 ഀഀ

BullpupFleshPoundKillsStat=0

਍倀漀椀猀漀渀攀搀䐀愀洀愀最攀匀琀愀琀㴀 ഀഀ

PipeBombDamageStat=0

਍䈀氀漀眀渀唀瀀䘀氀攀猀栀倀漀甀渀搀猀匀琀愀琀㴀 ഀഀ

TotalZedTimeStat=0.000000

਍ഀ
Аватара пользователя
lchou

Re: CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение lchou »

Хм... А в какой кодировке файлы?

Ну или попробуйте здесь менять последний параметр на 0, -1, -2



Код:

Код: Выделить всё

Set vStreamSrc1 = fso.OpenTextFile(FILE_SRC1, 1, False, 0)
Set vStreamSrc2 = fso.OpenTextFile(FILE_SRC2, 1, False, 0)
Set vStreamDest = fso.OpenTextFile(FILE_DEST, 2, True, 0)
Аватара пользователя
Aleks911tat

Re: CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение Aleks911tat »

Совсем забыл про не стандартную кодировку, поменял.

Появилась проблема, если во 2.txt в следующей строке после значения которое надо перенести в 1.txt есть квадратные скобки []



[76561198016708202]

GALL[M.P.A.D.]=SRVetDemolitions



то значение не переносится



[n StatsObject]

PlayerName=GALL[M.P.A.D.]



дальше он копирует неправильно.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой.

Сообщение megaloman »

Aleks911tat, Вот вариант решения

Код: Выделить всё

File1 = "D:\_Удали это\1.txt"
File2 = "D:\_Удали это\2.txt"
File3 = "D:\_Удали это\1new.txt"
WordKey = " StatsObject]"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.OpenTextFile(File2, 1, False)       ' Открываем исходный текст файл для чтения
AllTxt = F.ReadAll()                            ' Cчитываем весь файл в строковую переменную
F.Close                                         ' Закрываем файл
Mas = Split(AllTxt, vbCrLf)                     ' Разбиваем полученную строку в массив. Резделитель - конец строки и перевод строки vbCrLf
i0 = 0
ii = UBound(Mas)
Set F = FSO.OpenTextFile(File1, 1, False)       ' Открываем исходный текст файл для чтения
Set FF = FSO.OpenTextFile(File3, 2, True)        ' Создаём файл для записи результата
A = ""
wk = LCase(WordKey)
j = 0
Do While Not F.AtEndOfStream
    InString = Trim(F.ReadLine)
    If i0 <= ii Then
      If Mid(InString, 1, 1) = "[" Then
        If InStr(LCase(InString), wk) <> 0 Then
            For i = i0 To ii
                MM = Trim(Mas(i))
                j = i
                If Mid(MM, 1, 1) = "[" Then
                   InString = Replace(MM, "]", WordKey)
                   Exit For
                End If
            Next
            i0 = j + 1
        End If
      End If
    End If
    FF.Write A + InString
    A = vbCrLf
Loop
F.Close
FF.Close
Ответить

Вернуться в «Скриптовые языки администрирования Windows»