Цитата Elven:
@echo off
set fname=log.txt
FOR /F %%I IN ("comp1 comp2 comp3 backup") DO (
pushd \\%%I\logs
FOR /F "delims=" %%F IN ('dir /b /s /a:-d %fname%') DO (
echo copy "%%F" "d:\localfolder\%%~nF-%%I%%~xF"
)
popd
) »
|
При выполнении кода вида:
set fname=2020-10-05.gw.uniroll.log
FOR /F %%I IN ("\\127.0.0.1\c$\Test") DO (
pushd %%I\1
FOR /F "delims=" %%F IN ('dir /b /s /a:-d %fname%') DO (
echo copy "%%F" "d:\Backup\files\%%~nF-%%I%%~xF"
)
popd
) > 5.txt
Получаю след результат:
Z:\Test\1>(echo copy "Z:\Test\1\2020-10-05.gw.uniroll.log" "d:\Backup\files\2020-10-05.gw.uniroll-\\127.0.0.1\c$\Test.log" )
copy "Z:\Test\1\2020-10-05.gw.uniroll.log" "d:\Backup\files\2020-10-05.gw.uniroll-\\127.0.0.1\c$\Test.log"
Это не совсем то что мне нужно, да и файл не копируется.
Написал часть кода по копированию, но не совсем получилось что хотел.
Получается что копирует файл и тут же его перезаписывает.
Посмотрите пожалуйста что я не так сделал?!
Сам код:
@Echo on
path c:\windows\system32
etLocal EnableDelayedExpansion
Set sourcedir0=\\127.0.0.1\c$\Test\1
Set destdir=\\127.0.0.1\d$\Backup\files
Set files=2020-10-05.gw.uniroll
call :SUB0001
:SUB0001
for %%F in (%files%) do (for /L %%N in (6,-1,1) do (if %%N LEQ 9 (set NN=00%%N) else set NN=%%N))
For /F "Tokens=1" %%a In ('dir /A:-D /T:C /O:D "%sourcedir0%\*.*" ^| Findstr /E /c:"%files%"') Do (
if not exist %files%_%NN%.log md "%destdir%\%files%
)
xcopy /chkqr %sourcedir0%\%files%.log %destdir%\%files%\%files%_%NN%.log
)
Pause
)
Получается цикл, копирование и перезапись, а мне нужно чтобы из указанных нескольких путей скопировлся допустим данный файл, а если его нет на ПК, то произошел его поиск в архиве с извлечением в указанную папку.
Знаю что, что то делаю не так, но где и что не пойму.
Т.е. должно получиться так:
Допустим есть:
\\127.0.0.1\c$\Test\1
\\127.0.0.1\c$\Test\2
\\127.0.0.1\c$\Test\3
\\127.0.0.1\c$\Test\4
\\127.0.0.1\c$\Test\5
\\127.0.0.1\c$\Test\6
В них есть файл:
2020-10-05.gw.uniroll.log ( где 2020-10-05 - дата, а остальное может меняться gw.uniroll.log, YY.XXX.log) Все это будет указываться в bat-нике
Если этого файла нет в ни по одному из пути выше, то необходим поиск и извлечение этого файла из:
\\127.0.0.1\c$\Backup\1
\\127.0.0.1\c$\Backup\2
\\127.0.0.1\c$\Backup\3
\\127.0.0.1\c$\Backup\4
\\127.0.0.1\c$\Backup\5
\\127.0.0.1\c$\Backup\6
в файле backup.rar, который дописывается файлами 3-х дневной давности.