Назад | Перейти на главную страницу

Robocopy перемещает файлы из каталога, но сохраняет некоторые файлы

Я пытаюсь переместить файлы из одной папки в другую, когда она достигает предела, и сохраняю некоторые файлы в источнике, используя batch scripting. Я пробовал с move но исходная папка читается другим процессом, что вызывает конфликты между ней и моим скриптом, когда оба пытаются получить доступ к одному и тому же файлу, поэтому решил использовать robocopy вместо.

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

Вот что я пытался сделать:

@echo off

set "source=\\ServerDNS\ServerName\FolderA\test"
set "target=\\ServerDNS\ServerName\FolderB\test"

::How many files to keep in the folder
set /A threshold = 2
set /A keep = 1

for /f %%A in ('dir "%source%\*.txt*" ^| find "File(s)"') do set cnt=%%A
@echo Files Found = %cnt%

if %cnt% gtr %threshold% (call :move_to_fast_track) else (@echo No need to move)

:move_to_fast_track
@echo Moving files
::replace @echo by robocopy for testing
for /f "skip=%keep% delims=" %%i in ('dir "%source%" /b /o-d *.txt*') do (@echo "%source%" "%target% %%i" /s /e /mov /Z)
exit /B 0

При отображении строки, которая должна переместить файлы, вывод журнала выглядит следующим образом. Я думаю, что даже если есть условие, robocopy все равно выполняется, когда я /mov файлы.

Files Found = 0
No need to move
Moving files
"\\ServerDNS\ServerName\FolderA\test" "\\ServerDNS\ServerName\FolderB\test File1.txt" /s /e /mov /Z
"\\ServerDNS\ServerName\FolderA\test" "\\ServerDNS\ServerName\FolderB\test File2.txt" /s /e /mov /Z
"\\ServerDNS\ServerName\FolderA\test" "\\ServerDNS\ServerName\FolderB\test File3.txt" /s /e /mov /Z
"\\ServerDNS\ServerName\FolderA\test" "\\ServerDNS\ServerName\FolderB\test File4.txt" /s /e /mov /Z

Надеюсь, вы дадите мне несколько советов, самый важный из них:

A) Запретить другим процессам читать / перемещать файлы, пока мой сценарий перемещает файл. Б) Ни один файл не отсутствует

любая помощь признательна.