You can override your implementation of wdired-do-renames
as follows (the idea being just to create each destination file's parent directory before doing the rename):
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 2e53944..cc838cf 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -490,6 +490,7 @@ non-nil means return old filename."
(require 'dired-aux)
(condition-case err
(let ((dired-backup-overwrite nil))
+ (wdired-create-parentdirs file-new)
(dired-rename-file file-ori file-new
overwrite))
(error
@@ -499,6 +500,10 @@ non-nil means return old filename."
err)))))))))
errors))
+(defun wdired-create-parentdirs (file-new)
+ "Create parent directories of destination filename."
+ (message "create dir for file %s" file-new)
+ (make-directory (file-name-directory file-new) t))
(defun wdired-exit ()
"Exit wdired and return to dired mode.
Source: Joakim Verona via http://www.emacswiki.org/emacs/WDired#toc1 (I cleaned up the patch just a bit)