Odin | База знаний 1С

Как проверить налич...
 

Как проверить наличие файлов в сетевой папке перед копированием с помощью батник


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

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

@echo on
setlocal

set "networkPath=\192.168.0.01cbackup1c_daily"
set "localPath=C:LocalBackup1c_daily"
set "username=1c"
set "password=1"
set "daysToKeep=1"

net use %networkPath% /user:%username% %password%

if errorlevel 1 (
echo error.
exit /b 1
)

forfiles /p "%localPath%" /s /m *.zip /d -%daysToKeep% /c "cmd /c del @path"

xcopy "%networkPath%*.zip" "%localPath%" /D:%date:~3,2%-%date:~0,2%-%date:~8% /Y /I

net use %networkPath% /delete

echo ready
endlocal



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 
bat
@echo on
setlocal

set "networkPath=\192.168.0.01cbackup1c_daily"
set "localPath=C:LocalBackup1c_daily"
set "username=1c"
set "password=1"
set "daysToKeep=1"

net use %networkPath% /user:%username% %password%

if errorlevel 1 (
    echo error.
    exit /b 1
)

forfiles /p "%localPath%" /s /m *.zip /d -%daysToKeep% /c "cmd /c del @path"

rem Проверяем, есть ли файлы в сетевой папке
if exist "%networkPath%*.zip" (
    xcopy "%networkPath%*.zip" "%localPath%" /D:%date:~3,2%-%date:~0,2%-%date:~8% /Y /I
) else (
    echo No new backup files found in the network path. Existing local files will not be deleted.
)

net use %networkPath% /delete

echo ready
endlocal

В этом измененном батнике добавлена проверка на наличие файлов в сетевой папке перед выполнением команды `xcopy`. Если файлов нет, выводится сообщение, и существующие локальные файлы не удаляются.



   
ОтветитьЦитата