Which command can I use to recursively rename or move a file in Windows?

Use XP's for command. For example from the command line (in a batch file use %%x instead) to do a recursive move do:

for /r %x in (foo) do move "%x" "drive:\path\bar"

To do a recursive rename do:

for /r %x in (*.c) do ren "%x" *.cpp

Example batch:

for /r "< DIR >" %%x in (*.c) do ren "%%x" *.cpp

robocopy "C:\Source Folder" "C:\Destination Folder" /E /COPYALL /XJ


Description of parameters:
/E - copy subdirectories, including Empty ones (/S to exclude empty ones)
/COPYALL - COPY ALL file info (equivalent to /COPY:DATSOU)
/XJ - eXclude Junction points and symbolic links. (normally included by default).

I just run a small example in my Windows XP SP2 box with the move command and it worked. All files and directories were moved from source to dest. source and dest are directory names.

move source dest
ver

Microsoft Windows XP [Version 5.1.2600]
move /?

Moves files and renames files and directories.

To move one or more files:
MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination

To rename a directory:
MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2

  [drive:][path]filename1 Specifies the location and name of the file
                          or files you want to move.
  destination             Specifies the new location of the file. Destination
                          can consist of a drive letter and colon, a
                          directory name, or a combination. If you are moving
                          only one file, you can also include a filename if
                          you want to rename the file when you move it.
  [drive:][path]dirname1  Specifies the directory you want to rename.
  dirname2                Specifies the new name of the directory.

  /Y                      Suppresses prompting to confirm you want to
                          overwrite an existing destination file.
  /-Y                     Causes prompting to confirm you want to overwrite
                          an existing destination file.

The switch /Y may be present in the COPYCMD environment variable.
This may be overridden with /-Y on the command line.  Default is
to prompt on overwrites unless MOVE command is being executed from
within a batch script.