Один способ сделать это состоит в том, чтобы создать пакетный файл с соответствующими командами.
build.bat
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command "& 'c:\scripts\build_project.ps1' "
Необходимо будет передать параметры командной строки от пакетного файла до сценария, если сценарий PS использует их. Необходимо будет также загрузить все powershell модули использование сценария:
Add-PSSnapin Module-Name
Я не нашел команды, которая бы делала это за один раз, но поскольку rsync по-прежнему работает лучше, чем rm -rf
(особенно, если у вас очень большое количество каталогов), вот две команды rsync, которые выполните "перемещение" :
rsync -av --ignore-existing --remove-source-files source/ destination/ && \
rsync -av --delete `mktemp -d`/ source/ && rmdir source/
Почему бы просто не добавить rm -rf source_directory
после вашего rsync?
rsync -axvvES --remove-source-files source_directory /destination/ && rm -rf source_directory
Каждая программа командной строки (в идеале) создана для выполнения указанной задачи, и это '
Использование « rm -rf » имеет присущее состояние гонки, вы можете удалить файлы, которые только что были созданы между rsync и ] rm вызовы.
Я предпочитаю использовать:
rsync --remove-source-files -a server:incoming/ incoming/ &&
ssh server find incoming -type d -delete
Это НЕ удалит каталоги, если они не пусты.
Я оказался в похожей ситуации. Я хотел избежать использования rm -rf
, зная, что rsync не может скопировать некоторые файлы, и я не хотел их терять.
Чтобы просто удалить пустые каталоги, я нашел этот самый удобный (из sourcedir
):
find . -type d -empty -delete