Войти

Показать полную графическую версию : [решено] Обратотать файл и создать список аккаунтов которые имеют определенную игру


Страниц : [1] 2

aVitaliy
27-06-2024, 08:21
Подскажите как сделать такое. При помощи BAT файла или PowerShell.
Мне надо из текстового файла выбрать аккаунты, которые содержат нужную мне определенную игру и создать отдельный файл с перечнем этих аккаунтов.
В данном случает, мне нужно составить список аккаунтов которые имеют для примера только игру: app/252490 | Rust
Чтобы в конечном итоге этот список выглядел вот так (Все одной строкой, после каждого аккаунта запятая): ac1,ac4,ac5,...


<ac1> Уже имеет: app/252490 | Rust
<ac1> Уже имеет: app/700580 | Rust - Staging Branch
<ac1> Уже имеет: app/435120 | Rusty Lake Hotel

<ac2> Уже имеет: app/700580 | Rust - Staging Branch
<ac2> Уже имеет: app/435120 | Rusty Lake Hotel

<ac3> Уже имеет: app/700580 | Rust - Staging Branch
<ac3> Уже имеет: app/435120 | Rusty Lake Hotel

<ac4> Уже имеет: app/252490 | Rust
<ac4> Уже имеет: app/700580 | Rust - Staging Branch
<ac4> Уже имеет: app/435120 | Rusty Lake Hotel

<ac5> Уже имеет: app/252490 | Rust

<ac6> Уже имеет: app/700580 | Rust - Staging Branch
<ac6> Уже имеет: app/435120 | Rusty Lake Hotel

и так далее...

DJ Mogarych
27-06-2024, 12:32
Powershell

$in = 'C:\temp\in.txt'
$out = 'C:\temp\out.txt'
$game = 'app/252490 | Rust'

(gc $in) -match "$game$" -replace '^<(.+)>.*','$1' -join ',' > $out

sov44
27-06-2024, 14:21
@echo off
setlocal enabledelayedexpansion

set in=a.txt
set id=252490

for /f "tokens=1 delims=<>" %%a in ('type %in% ^|find "%id%"') do set r=!r!,%%a
echo %id% = %r:~1%
pause

aVitaliy
01-07-2024, 11:21
Код:
@echo off
setlocal enabledelayedexpansion
set in=a.txt
set id=252490
for /f "tokens=1 delims=<>" %%a in ('type %in% ^|find "%id%"') do set r=!r!,%%a
echo %id% = %r:~1%
pause »

Можно как-то так же извлечеть из лог файла имена аккаунтов и составить из них них список (Все одной строкой, после каждого аккаунта запятая): ac1,ac4,ac5,...
Только вот имена аккаунтов, проблема в том что могут быть разной длины. Для примера 11 и 12 символов.


2024-07-01 03:30:29|ArchiSteamFarm-9720|DEBUG|zlobniychel|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 04:54:19|ArchiSteamFarm-9720|DEBUG|vertimoguner|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:26:30|ArchiSteamFarm-9720|DEBUG|nastoyazhiy|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:46:01|ArchiSteamFarm-9720|DEBUG|progorklynov|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english

DJ Mogarych
01-07-2024, 11:28
Powershell

$in = 'C:\temp\in.txt'
$out = 'C:\temp\out.txt'

(gc $in |% {$_.split('|')[3]}) -join ',' > $out

aVitaliy
01-07-2024, 12:38
Powershell
Код:
$in = 'C:\temp\in.txt'
$out = 'C:\temp\out.txt'
(gc $in |% {$_.split('|')[3]}) -join ',' > $out »

Срабатывает, но так как в лог файле есть еще много других строк содержащие имена аккаунтов, то выводит вообще все аккаунты, а не только аккаунты которые содержат строки "InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english".

DJ Mogarych
01-07-2024, 13:09
aVitaliy, так нужно было написать об этом, телепатов нету же.


$in = 'C:\temp\in.txt'
$out = 'C:\temp\out.txt'
$str = 'InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english'

(sls -Path $in -SimpleMatch $str |% {$_.tostring().split('|')[3]}) -join ',' > $out

aVitaliy
01-07-2024, 13:23
aVitaliy, так нужно было написать об этом, телепатов нету же. »
Согласен, упустил из виду, не подумал заранее об этом. Сейчас проверил, работает как надо. Благодарю!

sov44
16-07-2024, 10:53
Можно как-то так же извлечеть из лог файла имена аккаунтов и составить из них них список (Все одной строкой, после каждого аккаунта запятая): ac1,ac4,ac5,... »
@echo off
setlocal enabledelayedexpansion
set in=a1.txt
for /f "tokens=4 delims=|" %%a in ('type %in%') do set r=!r!,%%a
echo %r:~1%
pause

aVitaliy
16-07-2024, 14:42
Цитата aVitaliy:
Можно как-то так же извлечеть из лог файла имена аккаунтов и составить из них них список (Все одной строкой, после каждого аккаунта запятая): ac1,ac4,ac5,... »
Код:
@echo off
setlocal enabledelayedexpansion
set in=a1.txt
for /f "tokens=4 delims=|" %%a in ('type %in%') do set r=!r!,%%a
echo %r:~1%
pause »

Что-то не срабатывает у меня.
Переделал немного, как выше был другой рабочий вариант.
Но у меня выводит в итоге только самый последний аккаунт, все остальные не выводятся.
То есть в итоге получается как-то так:
Forbidden = r!,ac5

Вот сам скрипт, который я переделал, но что в нем переделать, чтобы работал и выводил все аккаунты?

@echo off
set in=log.txt
set id=Forbidden
for /f "tokens=4 delims=|" %%a in ('type %in% ^|find "%id%"') do set r=!r!,%%a
echo %id% = %r:~1% > Forbidden-Owns.txt
:pause

sov44
16-07-2024, 15:44
aVitaliy, у меня вроде всё работает.

@echo off
setlocal enabledelayedexpansion
set in=a1.txt
for /f "tokens=4 delims=|" %%a in ('type %in%') do set r=!r!,%%a
echo %r:~1%
pause


2024-07-01 03:30:29|ArchiSteamFarm-9720|DEBUG|zlobniychel|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 04:54:19|ArchiSteamFarm-9720|DEBUG|vertim|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:26:30|ArchiSteamFarm-9720|DEBUG|nastoyazhiy|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:46:01|ArchiSteamFarm-9720|DEBUG|progorklynov|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english



zlobniychel,vertim,nastoyazhiy,progorklynov
Для продолжения нажмите любую клавишу . . .

aVitaliy, для вычисления возникшей у вас ошибки, прикрепите в теме файл для обработки или отправьте мне его в личку.

aVitaliy
16-07-2024, 16:57
sov44,
Если использовать тот же файл a1.txt
2024-07-01 03:30:29|ArchiSteamFarm-9720|DEBUG|zlobniychel|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 04:54:19|ArchiSteamFarm-9720|DEBUG|vertim|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:26:30|ArchiSteamFarm-9720|DEBUG|nastoyazhiy|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:46:01|ArchiSteamFarm-9720|DEBUG|progorklynov|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english

И вот этот скрипт:
@echo off
set in=a1.txt
set id=Forbidden
for /f "tokens=4 delims=|" %%a in ('type %in% ^|find "%id%"') do set r=!r!,%%a
echo %id% = %r:~1%
pause



Forbidden = r!,progorklynov
То есть выводит, но только самый последний аккаунт, вместо всех.
Вот этот скрип не пойму как изменить/доделать чтобы вывел все аккаунты.

sov44
16-07-2024, 17:07
aVitaliy, уберите ^|find "%id%"
Иными словами вы просматриваете текстовый файл a1 на наличие строк со словом Forbidden, а затем найденные строки разбиваете на токены. В этом ошибка.

aVitaliy
16-07-2024, 18:02
sov44, Иными словами вы просматриваете текстовый файл a1 на наличие строк со словом Forbidden, а затем найденные строки разбиваете на токены. В этом ошибка. »
Да, так как лог файле содержиться очень много другой информации.
И мне надо из строк где есть слово Forbidden выделить имя аккаунта и вывести/показать все эти имена аккаунтов.


@echo off
setlocal enabledelayedexpansion
set in=a1.txt
for /f "tokens=4 delims=|" %%a in ('type %in%') do set r=!r!,%%a
echo %r:~1%
pause


2024-07-01 03:30:29|ArchiSteamFarm-9720|DEBUG|zlobniychel|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 04:54:19|ArchiSteamFarm-9720|DEBUG|vertim|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:26:30|ArchiSteamFarm-9720|DEBUG|nastoyazhiy|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:46:01|ArchiSteamFarm-9720|DEBUG|progorklynov|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-11 12:02:12|ArchiSteamFarm-8740|WARN|ac3|SendTradeOffer() Не удалось из-за ошибки: You have sent too many trade offers, or have too many outstanding trade offers with ac0. Please cancel some before sending more.
2024-07-11 12:04:24|ArchiSteamFarm-8740|DEBUG|ac1|InternalRequest() InternalServerError <- POST https://steamcommunity.com/tradeoffer/new/send
2024-07-11 12:04:24|ArchiSteamFarm-8740|WARN|ac2|SendTradeOffer() Не удалось из-за ошибки: There was an error sending your trade offer. Please try again later. (15)
2024-07-11 12:07:24|ArchiSteamFarm-8740|DEBUG|ac5|InternalRequest() InternalServerError <- POST https://steamcommunity.com/tradeoffer/new/send
2024-07-11 12:07:24|ArchiSteamFarm-8740|WARN|ac6|SendTradeOffer() Не удалось из-за ошибки: There was an error sending your trade offer. Please try again later. (15)
2024-07-14 16:17:14|ArchiSteamFarm-8740|INFO|ac7|Init() Успешно!


zlobniychel,vertim,nastoyazhiy,progorklynov,ac3,ac1,ac2,ac5,ac6,ac7
Для продолжения нажмите любую клавишу . . .

sov44
16-07-2024, 19:19
aVitaliy, пробуйте
@echo off
setlocal enabledelayedexpansion

set in=a1.txt
set id=Forbidden

for /f "tokens=4 delims=|" %%a in ('type %in% ^|find /i "%id%" 2^>nul') do set r=!r!,%%a
echo %id% = %r:~1%
pause
exit



2024-07-01 03:30:29|ArchiSteamFarm-9720|DEBUG|zlobniychel|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 04:54:19|ArchiSteamFarm-9720|DEBUG|vertim|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:26:30|ArchiSteamFarm-9720|DEBUG|nastoyazhiy|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:46:01|ArchiSteamFarm-9720|DEBUG|progorklynov|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-11 12:02:12|ArchiSteamFarm-8740|WARN|ac3|SendTradeOffer() Не удалось из-за ошибки: You have sent too many trade offers, or have too many outstanding trade offers with ac0. Please cancel some before sending more.
2024-07-11 12:04:24|ArchiSteamFarm-8740|DEBUG|ac1|InternalRequest() InternalServerError <- POST https://steamcommunity.com/tradeoffer/new/send
2024-07-11 12:04:24|ArchiSteamFarm-8740|WARN|ac2|SendTradeOffer() Не удалось из-за ошибки: There was an error sending your trade offer. Please try again later. (15)
2024-07-11 12:07:24|ArchiSteamFarm-8740|DEBUG|ac5|InternalRequest() InternalServerError <- POST https://steamcommunity.com/tradeoffer/new/send
2024-07-01 05:46:01|ArchiSteamFarm-9720|DEBUG|progorklynov77|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-11 12:07:24|ArchiSteamFarm-8740|WARN|ac6|SendTradeOffer() Не удалось из-за ошибки: There was an error sending your trade offer. Please try again later. (15)
2024-07-14 16:17:14|ArchiSteamFarm-8740|INFO|ac7|Init() Успешно!
2024-07-01 05:46:01|ArchiSteamFarm-9720|DEBUG|progorklynov111|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:26:30|ArchiSteamFarm-9720|DEBUG|nastoyazhiy77|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-01 05:46:01|ArchiSteamFarm-9720|DEBUG|progorklynov000|InternalRequest() Forbidden <- GET https://store.steampowered.com/explore?l=english
2024-07-11 12:02:12|ArchiSteamFarm-8740|WARN|ac3|SendTradeOffer() Не удалось из-за ошибки: You have sent too many trade offers, or have too many outstanding trade offers with ac0. Please cancel some before sending more.
2024-07-11 12:04:24|ArchiSteamFarm-8740|DEBUG|ac1|InternalRequest() InternalServerError <- POST https://steamcommunity.com/tradeoffer/new/send



Forbidden = zlobniychel,vertim,nastoyazhiy,progorklynov,progorklynov77,progorklynov111,nastoyazhiy77,progorklyno v000
Для продолжения нажмите любую клавишу . . .

aVitaliy
17-07-2024, 04:39
sov44,
Да это то что надо. Обработал лог файл и вывел все аккаунты которые были с Forbidden.

Большое спасибо за помощь sov44 и DJ Mogarych.

aVitaliy
07-12-2024, 07:45
Код:
@echo off
setlocal enabledelayedexpansion
set in=a.txt
set id=252490
for /f "tokens=1 delims=<>" %%a in ('type %in% ^|find "%id%"') do set r=!r!,%%a
echo %id% = %r:~1%
pause »

Добрый день.
Как можно немного переделать этот код, чтобы вместо списка в одну строку с запятой после каждого аккаунта, выводил список аккаунтов в столбец без запятых?

Выводило вот так:
Account1
Account2
Account3
Account4
и так далее...

NickM
07-12-2024, 10:46
@echo off
setlocal enabledelayedexpansion

set in=a1.txt
set id=Forbidden

for /f "tokens=4 delims=|" %%a in ('type %in% ^|find /i "%id%" 2^>nul') do echo.%%a
::echo %id% = %r:~1%
pause
exit

sov44
07-12-2024, 12:20
список аккаунтов в столбец »
@echo off
setlocal enabledelayedexpansion
set in=a.txt
set id=252490
for /f "tokens=1 delims=<>" %%a in ('type %in% ^|find "%id%"') do echo %%a
pause
exit

megaloman
07-12-2024, 15:26
aVitaliy, Может так?@Echo Off &Cls
Set "FileIn=Z:\Box_In\file.txt"

>"%FileIn%.tmp" (For /f "usebackq tokens=1* Delims=:" %%i IN (`2^>nul type "%FileIn%"`) Do Echo %%j %%i)
>"%FileIn%.out" (For /f "usebackq tokens=1,2 Delims=<>" %%i IN (`2^>nul type "%FileIn%.tmp" ^|Sort`) Do Echo %%j %%i)
Del "%FileIn%.tmp"

notepad "%FileIn%.out"
Pause
Exit /B
@Echo Off &Cls
Set "FileIn=Z:\Box_In\file.txt"
Set "BoxOut=Z:\Box_In"

2>nul Del "%BoxOut%\*.out"
For /f "usebackq tokens=1,3* Delims=<>/|" %%i IN (`2^>nul type "%FileIn%"`) Do >>"%BoxOut%\%%j%%k.out" Echo %%i %%j%%k
Pause
Exit /B




© OSzone.net 2001-2012