Как правильно сослать файлы на другой раздел?

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

ДАНО:

ОС: Windows 10 x64
Программа: prog.exe (консольная, исполняется в CMD либо PowerShell)
Данная программа сразу после запуска создает на диске X:\ файлы вида:

X:\workfile-a_1.tmp
X:\workfile-a_2.tmp
X:\workfile-a_3.tmp
X:\workfile-a_4.tmp
X:\workfile-a_5.tmp

Это временные файлы, создаваемые программой для выполнения поставленной задачи. Что-то типа кэша.
Имена файлов до запуска программы не известны. Их программа рандомно генерирует при старте. Статическими остаются только workfile и расширение .tmp.
Поработав с данными файлами, программа один за одним их начинает удалять, начиная с файла *1.tmp и заканчивая файлом *5.tmp.
Программа продолжает работать далее и на месте удаленных файлов создает новые, вида:

X:\workfile-b_1.tmp
X:\workfile-b_2.tmp
X:\workfile-b_3.tmp
X:\workfile-b_4.tmp
X:\workfile-b_5.tmp

Необходимым условием для работы программы является наличие всех пяти файлов вместе в одной папке.

ЗАДАЧА:

Нужно сделать так, чтобы файлы: X:\workfile-a_3.tmp и X:\workfile-b_4.tmp были созданы и обрабатывались программой на диске Z:\, причем таким образом, чтобы программа по прежнему работала с ними, а также могла удалить их, обращаясь к ним по старому пути на диск X:\ (необходимое условие).
На диске Z:\, в силу ограничение его объема, может находиться только один файл: сначала файл Z:\workfile-a_3.tmp, затем файл Z:\workfile-b_4.tmp. Каждый из файлов занимает практически весь диск Z:\.

МОЯ РЕАЛИЗАЦИЯ:

Скрипт стартует программу, приостанавливает ее, парсит динамическую часть имени файла в переменную, которая далее используется в создании символических ссылок для файлов X:\workfile-a_3.tmp и X:\workfile-b_4.tmp:

mklink X:\workfile-a_3.tmp Z:\workfile-a_3.tmp
mklink X:\workfile-b_4.tmp Z:\workfile-b_4.tmp

После создания ссылок программа снимается с паузы и продолжает работать.
И так, файлы созданы и обрабатываются программой:

           X:\                                  Z:\
========================= ========================== workfile-a_1.tmp
workfile-a_2.tmp
workfile-a_3.tmp.symlink → workfile-a_3.tmp
workfile-a_4.tmp
workfile-a_5.tmp
workfile-b_4.tmp.symlink

После обработки программа начинает один за одним удалять файлы, после чего создает новые:

           X:\                                  Z:\
========================= ========================== workfile-a_1.tmp
workfile-a_2.tmp
workfile-a_3.tmp.symlink
workfile-a_3.tmp
workfile-a_4.tmp
workfile-a_5.tmp

workfile-b_1.tmp
workfile-b_2.tmp
workfile-b_3.tmp
workfile-b_4.tmp.symlink → !!! ОШИБКА !!!

Вот на этом этапе я и застрял.
Как видите, программа удалила симлинк на файл, а сам файл workfile-a_3.tmp остался на диске Z:\.
Соответственно, диск Z:\ заполнен, сослать следующий файл workfile-b_4.tmp уже не возможно.
В итоге, работа программы преждевременно прекращена.
Кроме symlink рассматривал также другие виды ссылок: hardlink и junction.
Hardlink сам по себе не подходит, т.к. может существовать только в пределах одного раздела.
Junction тоже сам по себе не подходит, так как ссылать можно только каталоги, а весь диск X:\ я не могу сослать, поскольку диск Z:\ ограничен в объеме. Разве что найти возможность пропустить junction через фильтр, который бы не ссылал ненужные мне файлы, либо ссылал только нужные. Hardlink поместить в junction, который ссылается на другой раздел тоже невозможно.

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

PS:
Не привязывайтесь к операционной системе. Windows, конечно, в приоритете. Однако, если не будет других вариантов, ничего против других ОС я не имею. Программа может работать также под Linux и MacOS.
Можно мою реализацию развить далее, толково реализовав автоматизацию удаления файла workfile-a_3.tmp с диска Z:\ сразу после удаления программой на него симлинка (X:\workfile-a_3.tmp.symlink).
А можно и все сделать заново. В общем, варианты возможны любые. Помочь может абсолютно любой совет, любая идея.


Ответы (0 шт):