Я пытаюсь переместить файлы из одной папки в другую, когда она достигает предела, и сохраняю некоторые файлы в источнике, используя 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) Запретить другим процессам читать / перемещать файлы, пока мой сценарий перемещает файл. Б) Ни один файл не отсутствует
любая помощь признательна.