[Batch/CMD] Копирование файлов с контролем сбоев

nikola24

Новый пользователь
Сообщения
3
Реакции
0
@AssistGPT Есть две папки на компьютере1 и2. Есть bat-фал, который периодически копирует файлы и папки из папки 1 в папку2, а потом стирает все файлы и папки в папки 1. Как модифицировать bat файл, чтобы он стирал файлы и папки в папке 1, только если копирование в папку 2 было успешным. А если что-то помешало (не было доступа, какой-то сбой и т.д) файлы и папки в папке 1 не стирались
 
Последнее редактирование модератором:
@AssistGPT Есть две папки на компьютере1 и2. Есть bat-фал, который периодически копирует файлы и папки из папки 1 в папку2, а потом стирает все файлы и папки в папки 1. Как модифицировать bat файл, чтобы он стирал файлы и папки в папке 1, только если копирование в папку 2 было успешным. А если что-то помешало (не было доступа, какой-то сбой и т.д) файлы и папки в папке 1 не стирались
Для того, чтобы модифицировать bat-файл, необходимо добавить проверку успешности копирования файлов и папок из папки 1 в папку 2 перед удалением файлов и папок из папки 1.

Вот пример такого bat-файла:

Код:
@echo off
set source_folder=C:\путь\к\папке1
set destination_folder=C:\путь\к\папке2

robocopy "%source_folder%" "%destination_folder%" /mir /r:0 /w:0

if %errorlevel%==0 (
  echo Копирование успешно завершено
  rd /s /q "%source_folder%"
) else (
  echo Копирование не удалось
)

В этом примере мы используем утилиту robocopy для копирования файлов и папок из папки 1 в папку 2. Флаг /mir указывает на то, что нужно скопировать все файлы и папки и удалить те, которых нет в папке 1. Флаги /r:0 и /w:0 указывают на то, что не нужно повторять попытки копирования в случае ошибок.

После копирования мы проверяем код возврата утилиты robocopy. Если он равен 0, то копирование было успешным и мы удаляем файлы и папки из папки 1 с помощью команды rd. Если код возврата не равен 0, то копирование не удалось и мы не удаляем файлы и папки из папки 1.

Надеюсь, это поможет вам модифицировать ваш bat-файл. Если у вас есть дополнительные вопросы, я буду рад на них ответить.
 
Для того, чтобы модифицировать bat-файл, необходимо добавить проверку успешности копирования файлов и папок из папки 1 в папку 2 перед удалением файлов и папок из папки 1.

Вот пример такого bat-файла:

Код:
@echo off
set source_folder=C:\путь\к\папке1
set destination_folder=C:\путь\к\папке2

robocopy "%source_folder%" "%destination_folder%" /mir /r:0 /w:0

if %errorlevel%==0 (
  echo Копирование успешно завершено
  rd /s /q "%source_folder%"
) else (
  echo Копирование не удалось
)

В этом примере мы используем утилиту robocopy для копирования файлов и папок из папки 1 в папку 2. Флаг /mir указывает на то, что нужно скопировать все файлы и папки и удалить те, которых нет в папке 1. Флаги /r:0 и /w:0 указывают на то, что не нужно повторять попытки копирования в случае ошибок.

После копирования мы проверяем код возврата утилиты robocopy. Если он равен 0, то копирование было успешным и мы удаляем файлы и папки из папки 1 с помощью команды rd. Если код возврата не равен 0, то копирование не удалось и мы не удаляем файлы и папки из папки 1.

Надеюсь, это поможет вам модифицировать ваш bat-файл. Если у вас есть дополнительные вопросы, я буду рад на них ответить.
Bat файл файлы переносит, но пишет, что попытка не удалась и оставляет файлы в папке 1
 
Bat файл файлы переносит, но пишет, что попытка не удалась и оставляет файлы в папке 1
Если ваш bat-файл переносит файлы, но при этом выводит сообщение об ошибке и не удаляет файлы из папки 1, то, скорее всего, проблема в проверке кода возврата утилиты robocopy.

Проверьте, что в вашем bat-файле после строки с командой robocopy находится следующий код:

Код:
if %errorlevel%==0 (
  echo Копирование успешно завершено
  rd /s /q "%source_folder%"
) else (
  echo Копирование не удалось
)

Этот код проверяет код возврата утилиты robocopy и выполняет удаление файлов из папки 1 только в том случае, если копирование было успешным (код возврата равен 0).

Если код возврата не равен 0, то выводится сообщение об ошибке, но файлы из папки 1 не удаляются.

Если код возврата всегда равен 1, то это может быть связано с тем, что утилита robocopy не может получить доступ к файлам из папки 1. Убедитесь, что у вас есть права на чтение и запись в папке 1 и папке 2.

Если у вас остались какие-то вопросы, пожалуйста, уточните их.
 
Если ваш bat-файл переносит файлы, но при этом выводит сообщение об ошибке и не удаляет файлы из папки 1, то, скорее всего, проблема в проверке кода возврата утилиты robocopy.

Проверьте, что в вашем bat-файле после строки с командой robocopy находится следующий код:

Код:
if %errorlevel%==0 (
  echo Копирование успешно завершено
  rd /s /q "%source_folder%"
) else (
  echo Копирование не удалось
)

Этот код проверяет код возврата утилиты robocopy и выполняет удаление файлов из папки 1 только в том случае, если копирование было успешным (код возврата равен 0).

Если код возврата не равен 0, то выводится сообщение об ошибке, но файлы из папки 1 не удаляются.

Если код возврата всегда равен 1, то это может быть связано с тем, что утилита robocopy не может получить доступ к файлам из папки 1. Убедитесь, что у вас есть права на чтение и запись в папке 1 и папке 2.

Если у вас остались какие-то вопросы, пожалуйста, уточните их.
Указанный код в bat-файле есть. Права на чтение и запись в папке 1 и в папке 2 для учетной записи из под которой выполняется операция есть. С чем ещё может быть связана ошибка?
 
Указанный код в bat-файле есть. Права на чтение и запись в папке 1 и в папке 2 для учетной записи из под которой выполняется операция есть. С чем ещё может быть связана ошибка?
Если права на чтение и запись в папке 1 и папке 2 установлены правильно, то причина ошибки может быть связана с тем, что некоторые файлы или папки в папке 1 заблокированы другими процессами или пользователями.

Для того, чтобы убедиться в этом, попробуйте выполнить следующие действия:

1. Остановите bat-файл и закройте все программы, которые могут использовать файлы в папке 1.

2. Попробуйте вручную скопировать файлы из папки 1 в папку 2 с помощью проводника Windows. Если вам не удастся скопировать какой-то файл, то это будет означать, что он заблокирован другим процессом или пользователем.

3. Если вы обнаружите заблокированный файл, попробуйте закрыть все программы, которые могут использовать этот файл, и повторите попытку копирования.

Если после выполнения этих действий вы все еще не можете скопировать файлы из папки 1 в папку 2, то проблема может быть связана с другими факторами, такими как наличие вирусов, ошибки файловой системы и т.д. В таком случае вам может потребоваться провести дополнительную диагностику и решить проблему.
 
Назад
Сверху Снизу