Я хотел спросить, знает ли кто-нибудь о способе сделать что-то изначально с Windows или PowerShell.

Я бы назвал это "Файловой воронкой".

Я хочу иметь возможность помещать файлы на машину в заданную папку, и эти файлы автоматически переносятся с течением времени (намного медленнее соединение) на сетевой диск.

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

Использовать его так же просто, как сбросить файлы в папке - после успешной передачи файлов папка будет пустой.

1 ответ1

1

Конечно, вы можете сделать это с Robocopy, используя параметры /S и /MOV чтобы убедиться, что файлы в исходном местоположении копируются в место назначения, а затем удаляете файлы из источника после успешного завершения копирования.


Пакетный скрипт

SET SRC="Z:\path\source"
SET DEST="X:\path\destination"
SET FName=*.*
SET LOG=C:\Path\Log.txt
::   If you do not want a log file, remove the "/LOG+:%LOG%" below
SET OPT=/S /MOV /NP /R:5 /LOG+:%Log% /TS /FP
SET CMD=robocopy %SRC% %FName% %DEST% %OPT%
%CMD%

Скрипт PowerShell

$SRC   = "Z:\path\source"
$DEST  = "X:\path\destination"
$FName = "*.*"
$OPT   = "/S /MOV /NP /R:5"
$CMD   = "robocopy $SRC $FName $DEST $OPT"
Invoke-Expression $CMD

Примечание. Для автоматизации вы просто создаете PowerShell или пакетный скрипт с этим синтаксисом и планируете запускать планировщик задач раз в час, каждые X минут и т.д. В соответствии с вашими потребностями планирования.


Дополнительные ресурсы

  • Robocopy

           /S :: copy Subdirectories, but not empty ones.
           /MOV :: MOVe files (delete from source after copying).
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .