Я работаю со следами тестовых исполнений. Существует один файл (traces/trace.txt), где хранится трассировка последнего теста, и я бы хотел написать сценарий для хранения старых версий этого файла.Использование сценариев .bat для автоматизации копирования файлов
Вот что я сделал:
-created папки для версий файлов «AllTraces»
Я написал сценарий «trace_archive.bat» для копирования файла с следом в эту папку и конкатенациях дата и время на имя:
set source=c:\some_path\traces\trace.txt
set destination=c:\somepath\AllTraces\
xcopy %source% %destination% /y
cd %destination%
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I
set datetime=%datetime:~0,8%-%datetime:~8,6%
ren "trace.txt" "trace_%datetime%.txt"
Таким образом, в этой папке у меня будет что файлы с такими именами, как это:
trace_20161117-095910.txt
trace_20161117-105713.txt
т.д.
-created папку "LastTrace"
Идея заключается в том, чтобы сохранить копию последней версии трассировки и сравнить трассы/trace.txt с ней. Если есть разница, то теперь мы выполняем новый тест, поэтому мы запускаем trace_archive.txt, чтобы сделать копию AllTraces и заменить trace.txt в LastTrace на текущую версию трасс/trace.txt. Итак, я создал скрипт «TraceTrigger.bat»:
set noDiff = "FC: no differences encountered"
FOR /F "tokens=* USEBACKQ" %%F IN (`fc /b C:\some_path\AllTraces\LastTrace\trace.txt c:\some_path\traces\trace.txt`)
DO (
SET result=%%F
)
if NOT %noDiff% == %result% (
c:some_path\scripts\trace_archive.bat
del /f c:sope_path\AllTraces\LastTrace\trace.txt
xcopy c:\Users\akomedat\AppData\Local\Temp\.FLT\traces\trace.txt c:Users\akomedat\AllTraces\LastTrace\
)
Этот скрипт не работает, как ожидалось. Конечно, он не выполняет trace_archive.bat и не копирует файл в AllTraces. Вот результат, который я получаю:
C:\some_path\scripts>TraceTrigger.bat
C:\some_path\scripts>set noDiff = "FC: no differences encountered"
C:\some_path\scripts>FOR /F "tokens=* USEBACKQ" %F IN (`fc /b C:\some_path\AllTraces\LastTrace\trace.txt c:\some_path\tra
ces\trace.txt`) DO (SET result=%F)
C:\some_path\scripts>(SET result=Comparing files C:\some_path\ALLTRACE
S\LASTTRACE\trace.txt and C:\some_path\TRACES\TRACE
.TXT)
C:\some_path\scripts>(SET result=FC: C:\some_path\ALLTRACES\LASTTRACE\
trace.txt longer than C:\some_path\TRACE.TXT
)
C:\some_path\ALLTRACES\LASTTRACE\trace.txt was unexpected at this time.
C:\some_path\scripts>if NOT == FC: C:\some_path\ALLTRACES\LASTTRACE\t
race.txt longer than C:\some_path\TRACES\TRACE.TXT
(
Как исправить TraceTrigger.bat?