Go Premium for a chance to win a PS4. Enter to Win

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 861
  • Last Modified:

robocopy experts

I have a terminal server that has an application that we want to export on a regular basis.  A robocopy will work find on it, but the source is by default every user's document folder. I know there is a exclusion, but I do not want to write the source custom for every user that has a profile on the server (about 40 of them), and I also only need two specific folders in their Document folder.  It would also be handy because as people join the team, I do not want to have to also remember to add to this batch.

the folders in question are found in "c:\documents and settings\%username%\folder1" and "folder2".  I tried exclusions, but it wants the entire path to exclude, which is the same problem as the the inclusive batch, meaning I do not want to type out everyone's user names into this script nor modify it when new people join the team.

Any ideas?
1 Solution
Luciano PatrãoICT Senior Infraestructure Engineer Commented:

Here you can find robocopy commands and some examples. Also some other tools that can be use to copy/migrate folders/files


Good example: Use robocopy to copy the user profiles

More info:
The batch script (whatever.cmd) below will scan all user profiles for a given list of folders and copy those over to a defined target folder.
The script should work on W2k8/Vista/Win7 as well, the profile root is determined automatically.
It's currently in test mode and will only display the commands it would run in normal mode; remove the capitalized ECHO in front of "if exist" to run it for real.
@echo off
:: *** The folder(s) to copy below the profile folder:
set FolderList="Folder 1" "Folder 2"
:: *** Path to the backup location:
set TargetRoot=D:\Temp
:: *** robocopy log file; %~dpn0 will expand to the script's path and name:
set LogFile=%~dpn0.log
:: *** Options for robocopy (except for source and target folder)
set RCOptions=/COPY:DAT /MIR /R:0 /W:0 /TEE /LOG+:"%LogFile%" /NP
:: *** No changes necessary below this line
if exist "%LogFile%" del "%LogFile%"
for /f "tokens=2*" %%a in ('reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v "ProfilesDirectory" ^| find /i "ProfilesDirectory"') do call :expand ProfileRoot "%%b"
echo Profile root: %ProfileRoot%
for /d %%a in ("%ProfileRoot%\*.*") do (
  echo Processing %%~nxa ...
  for %%f in (%FolderList%) do (
    ECHO if exist "%%a\%%~f" robocopy.exe "%%a\%%~f" "%TargetRoot%\%%a\%%~f" %RCOptions%
goto :eof

set %1=%~2

Open in new window

tsaicoAuthor Commented:
This is good, while it runs under a particular profile, I was hoping to run it under a scheduled task under my own, this will work.  THanks!

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now