Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Wrascon
0 / 0 / 1
Регистрация: 06.10.2013
Сообщений: 44
#1

Циклическое резервирование используемых файлов в свежей папке с перекодировкой по их изменению - CMD/BAT

02.09.2017, 14:06. Просмотров 228. Ответов 2
Метки нет (Все метки)

Здравствуйте, обращаюсь за помощью к знатокам манипулирования над файлами по реагированию на их изменение.
Существует дерево папок logs с 10 папками последних запущенных сессий игры с названием в виде даты её запуска "2017.09.01 13.55.30". В самой папке хранятся 4 используемых .log файла с неправильной UTF-8 (65001) кодировкой. Изменить их не удастся в связи с использованием их самой игрой (Процесс не может получить доступ к файлу, так как этот файл занят другим процессом) С задачей перекодировать их в ANSI (1251) я справился банальным созданием их копии
Windows Batch file
1
2
3
4
5
chcp 65001
cmd /d /u /c type chat.log > .tmp
chcp 1251
type .tmp > chat1.log
del .tmp
Но проблема заключается в том, что он работает только внутри самой папки с нужными мне файлами, папка которых меняется при каждом новом запуске (создаётся новая папка логов текущей сессии игры и удаляется самая старая из них).

Задача заключается в определении последней папки созданной сессией игры (пусть даже 2017~10), где путь будет выглядеть как "C:\Users\user\Documents\My Games\Crossout\logs\2017.09.01 13.55.30"
Найти группу файлов .log (chat, combat, game, net) скопировать перекодированные из UTF-8 в ANSI их варианты в отдельную папку "C:\Test"
Проверять группу файлов на изменение их размера и при увеличении количества строк копировать таким же вариантом с заменой уже существующих в "C:\Test"

Если возможно, такая проверка должна срабатывать при появлении более свежей папки раздела logs типа "C:\Users\user\Documents\My Games\Crossout\logs\2017.09.02 14.01.50"
http://www.cyberforum.ru/windows-admin/thread934153.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2017, 14:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Циклическое резервирование используемых файлов в свежей папке с перекодировкой по их изменению (CMD/BAT):

Циклическое создание файлов с текстом
Доброго времени суток всем! Есть задача создать 100 файлов с расширением *.cfg...

Циклическое копирование файлов и папок
Здравствуйте. Требуется создать цикл, в котором каждые 30 секунд будет...

Циклическое создание текстовых файлов со списками
Возможно ли докостылять этот батник? @echo off for /l %%i in (1,1,50) do...

Циклическое последовательное переименование файлов в каталоге
Здравствуйте! Прошу помощи в скрипте, сам мало что понимаю в них. В одном...

Как закрыть доступ к изменению ASP-файлов?
Есть такая проблема: ASP файлы, поставляемые заказчику и функционирующие на...

2
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
03.09.2017, 02:45 #2
здесь и здесь есть вариант получения последнего по дате создания файла что легко меняется на папку, дальше прикручивайте.
0
Wrascon
0 / 0 / 1
Регистрация: 06.10.2013
Сообщений: 44
26.09.2017, 00:17  [ТС] #3
Работаю всё над тем же проектом. Дело упирается в определение сегодняшней даты И ПОСЛЕДНЕГО времени создания папки. Сейчас полный путь не определяется самостоятельно, от чего также не возможно произвести копирование с перекодировкой. Не говоря уже об условии приводить эту проверку с копированием в цикл, я по прежнему сталкиваюсь с проблемами в её реализации.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@echo off
chcp 1251 >nul
 
Set $SRC=C:\Users\user\Documents\My Games\Crossout\logs
Set $LOG1=chat.log
Set $LOG2=combat.log
Set $LOG3=game.log
Set $LOG4=net.log
Set $DST=D:\Program Files\Clickermann v4.12\projects\Crossout\Полубот\[Crossout] Проверка чата
 
:: Текущее время
set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%
set ms=%TIME:~9,2%
set curtime=%h%.%m%.%s%
set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set curdate=%yyyy%.%mm%.%dd%
set curdatetime=%curdate% %curtime%
echo Текущее время - %curdatetime%
 
setlocal enabledelayedexpansion
set FileName=%$SRC%\%curdate% 14.10.52\%$LOG1%
for %%a in ("%FileName%") do (
    set File=%%~fa
    for /f "tokens=1* delims=," %%a in ('wmic datafile where "name='!File:\=\\!'" get 'LastModified' /format:csv ^| find /i "%ComputerName%"') do (set LastModified=%%b)
    set mYear=!LastModified:~0,4!
    set mMonth=!LastModified:~4,2!
    set mDay=!LastModified:~6,2!
    set mHour=!LastModified:~8,2!
    set mMinutes=!LastModified:~10,2!
    set mSec=!LastModified:~12,2!
    set TimeStamp=!mDay!.!mMonth!.!mYear! !mHour!:!mMinutes!:!mSec!
    ECHO !TimeStamp!
)
 
@echo off
chcp 65001
cmd /d /u /c type !x!%$LOG1% > .tmp
chcp 1251
type .tmp > %~dp0 %$LOG1%
del .tmp
 
echo xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "%$SRC%\*" "%$DST%"
xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "%$SRC%\*" "%$DST%"
pause>nul
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2017, 00:17
Привет! Вот еще темы с решениями:

Получить имена файлов, используемых процессом
есть некий процесс, он читает некие файлы, хочу получить имена этих файлов в...

Нет используемых роботом файлов Sitemap
Здравствуйте,решаю такой вопрос "Нет используемых роботом файлов Sitemap" :)...

Циклическое скрытие файлов на флешке
Суть вируса такова: Вставляю флешку в компьютер и все файлы на ней скриваются....

Циклическое построение графиков из файлов
Доброго времени суток! os - Debian, matlab - R2014a. Дано: много...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru