Dired move file breaks relative symlinks. Maybe we can call this a bug. I find a workaround with this advice.  I use this to move files (rel symlinks) around in a git-annex repo without brokening it.  I am quite new to emacs, I am not sure if that has any side effect.     (defun my-rename-file (file newname &optional ok-if-already-exists)     "fix path for relative symlink"     (if (file-symlink-p newname)     (let ((target (expand-file-name (file-symlink-p newname) (file-name-directory file))))           (if (and target (string-equal system-type "gnu/linux") (not (file-exists-p newname)))               (dired-make-relative-symlink target newname t)))))     (advice-add #'rename-file :after #'my-rename-file) There are some complicated examples of dealing with symlink : https://www.emacswiki.org/emacs/symlink-fix.el I am not sure if windows has relative shortcuts. This link show you can use symlinks in windows: https://github.com/sensorflo/sensorflo-emacs/blob/master/site-lisp/w32-symlinks.el