1

I made a simple batch for XP that our team used to recreate XP profiles in a corporate environment but we have since moved to Win 7. Obviously recreating a User Profile in 7 is a little bit more complicated than simply renaming the old profile, dropping a Restore batch in the All Users startup folder and then letting Windows create a fresh profile on login. Writing a batch tends to get a little too complicated on the if/then/else statements for me, so I'm hoping to keep it simple like the old one. Someone suggested I incorporate a small command-line friendly user profile deletion utility into the batch, but I haven't found any that first offers a backup. Which means I'd have to Robocopy the entire user profile first, then restore all the data on login. I'm "hoping" to avoid that time investment. It also makes me a bit nervous relying on no errors during the copying process before being all deleted on the next step. Which is why I really like the renaming of user profiles in XP for worst case scenarios. Can anyone point me in the direction of either a simple utility that does this, or can throw some quick and easy code together I might be able to use? Most of my XP batch was just using c$ access, simple commands like

rename "\\%ip%\c$\Documents and Settings\%USERNAME%" %USERNAME%.%date%

All your help is greatly appreciated!

Sandfrog
  • 33
  • 9
  • Messing with user profiles is dangerous. What are you actually trying to achieve here? – Harry Johnston Jun 28 '14 at 04:43
  • It's a blanket fix for many issues we experience here. I'm able to manually do this without an issue, and it fixes many problems. I would just like to automate it using batch? – Sandfrog Jun 30 '14 at 14:04
  • I would expect that most profile-deletion tools won't care whether the profile folder is present or not, so you should be able to move the folder somewhere safe and then delete the profile. Test thoroughly on non-production machines first. – Harry Johnston Jun 30 '14 at 20:52
  • Harry, those were my other thoughts I was going to ask about. I think I'm going to give this a shot and plug in something like the delprof.exe utility. – Sandfrog Jul 10 '14 at 14:26
  • You may need to delete users sid key on regedit, to prevent temp logons. First rename like in xp and then delete users sid key. I think path is hklm/ms/soft/winNT/currentversion/profilelist/$userSID – pedaleo Jul 11 '14 at 20:49

3 Answers3

0

The path has changed in Win 7. It's now c:\users.

if exist c:\user rename "\\%ip%\c$\Users\%USERNAME%" "%USERNAME%.%newdate%"
if exist "c:\Documents and settings" rename "\\%ip%\c$\Documents and Settings\%USERNAME%" "%USERNAME%.%newdate%"

Also %date% will contain illegal characters .

Set newdate=%date:\=%

Will put the digits without seperators into newdate.

Noodles
  • 1,981
  • 1
  • 11
  • 4
0

We utilize this in an Win 7 environment and does not have to be ran with elevated rights and can be done remotely. Key is the PC has be restarted and the user to not log in until after this script has run. After the user logs in and the script completes on the remote PC. You will have to remap any network printers and attach any PST files in Outlook.


@echo off
cls
title Profile Rebuilder (Local/Remote)
echo.
echo.
echo This batch file will rebuild a user's Windows 7 profile.
echo It is intended to help speed the process of rebuilding
echo a corrupted user profile either locally (while logged in
echo as DFASADMIN), or remotely.  Either way the user who's 
echo profile is being rebuilt can't be logged in and the PC 
echo must have been rebooted.
echo.
echo.
set /p cont=Do you wish to continue with the profile rebuild (y/n): 
if /i "%cont%"=="n" goto end

:local
echo.
set /p local=Is this script being run from a remote PC (y/n): 

:rebooted
echo.
set /p reb=Has the PC been rebooted (y/n): 
if /i "%reb%"=="y" goto renameremote
if /i "%local%"=="y" goto warn2

:warn1
cls
color c0
echo.
echo This script can not continue until the PC has been rebooted!
echo Please reboot now and then re-run this batch file.
echo.
pause
exit

:warn2
cls
color c0
echo.
echo This script can not continue until the PC has been rebooted!
echo Please have the user reboot now.  Ensure they do not login.
echo.
pause
color 0f
goto rebooted

:renameremote
if /i "%local%"=="n" goto renamelocal
cls
echo.
echo.
set /p comp=Please enter the Computer Name or IP address of the remote PC: 
echo.
echo Available Profiles:
dir /b "\\%comp%\c$\Users" | Find /v /i "users" | Find /v /i "default" | Find /v /i "dfasadmin" | Find /v /i "Public" | Find /v /i "runapps" | Find /v /i "mrbaInstall" | Find /v /i "test"
If Not %ErrorLevel%==0 goto Error
goto vername

:Error
cls
color c0
echo.
echo %comp% could not be contacted.
echo Please verify network connectivity and try again.
echo.
echo.
pause
exit

:vername
echo.
set /p name=Enter the profile name (i.e. firstname_lastname): 
if /i not exist "\\%comp%\c$\Users\%name%" goto vername
if exist "\\%comp%\c$\Users\%name%.bak2" move "\\%comp%\c$\Users\%name%.bak2" "\\%comp%\c$\Users\%name%.bak3"
if exist "\\%comp%\c$\Users\%name%.bak" move "\\%comp%\c$\Users\%name%.bak" "\\%comp%\c$\Users\%name%.bak2"
move "\\%comp%\c$\Users\%name%" "\\%comp%\c$\Users\%name%.bak"
if /i not exist "\\%comp%\c$\Users\%name%.bak" goto failed
set drv=\\%comp%\c$
goto restore

:renamelocal
cls
echo.
echo Available Profiles:
dir /b "C:\Users" | Find /v /i "user" | Find /v /i "default" | Find /v /i "dfasadmin" | Find /v /i "helpdesk" | Find /v /i "runapps" | Find /v /i "mrbaInstall" | Find /v /i "test"
:vername2
echo.
set /p name=Enter the profile name (i.e. firstname_lastname): 
if /i not exist "C:\Users\%name%" goto vername2
if exist "C:\Users\%name%.bak2" move "C:\Users\%name%.bak2" "C:\Users\%name%.bak3"
if exist "C:\Users\%name%.bak" move "C:\Users\%name%.bak" "C:\Users\%name%.bak2"
move "C:\Users\%name%" "C:\Users\%name%.bak"
if /i not exist "C:\Users\%name%.bak" goto failed
set drv=C:

:restore
echo @echo off >"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo cls >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo title Restoring Profile Data >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo **************************************************** >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo DO NOT CLOSE THIS WINDOW UNLESS INSTRUCTED TO DO SO. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo **************************************************** >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo Restoring The User's Desktop... >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\Desktop" "C:\Users\%name%\Desktop" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo Restoring The User's Favorites... >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\Favorites" "C:\Users\%name%\Favorites" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo Restoring The User's Documents... >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\Documents" "C:\Users\%name%\Documents" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\My Documents" "C:\Users\%name%\My Documents" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo Restoring The User's Pictures... >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\Pictures" "C:\Users\%name%\Pictures" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\My Pictures" "C:\Users\%name%\My Pictures" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo Restoring The User's PST files... >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo if not exist "C:\Users\%name%\Documents\Outlook Files" mkdir "C:\Users\%name%\Documents\Outlook Files"
echo if not exist "C:\Users\%name%\My Documents\Outlook Files" mkdir "C:\Users\%name%\My Documents\Outlook Files"
echo xcopy "C:\Users\%name%.bak\AppData\Local\Microsoft\Outlook\*.pst" "C:\Users\%name%\Documents\Outlook Files" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\AppData\Local\Microsoft\Outlook\*.pst" "C:\Users\%name%\My Documents\Outlook Files" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo Restoring The User's Roaming Settings... >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\AppData\Roaming\Microsoft\Signatures" "C:\Users\%name%\AppData\Microsoft\Signatures" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\AppData\Roaming\Microsoft\Proof" "C:\Users\%name%\AppData\Microsoft\Proof" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo if exist "C:\Users\%name%.bak\WinGamps32.ini" xcopy "C:\Users\%name%.bak\WinGamps32.ini" "C:\Users\%name%" /c /g /h /i /k /q /s /y >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\AppData\Roaming\Microsoft\Windows\Themes" "C:\Users\%name%\AppData\Roaming\Microsoft\Windows\Themes" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo Restoring The User's Local Settings... >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo xcopy "C:\Users\%name%.bak\AppData\Local\Microsoft\Windows\Themes" "C:\Users\%name%\AppData\Local\Microsoft\Windows\Themes" /c /g /h /i /k /q /s /y /exclude:C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo Restoring Printers
echo regedit /ADD \\%comp%\c$\Temp\Printers.reg
echo echo.
echo cd /d "C:\Users\%name%" >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo cls >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo The profile data has been restored.  You still need to: >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo      1) Re-map printers. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo      2) Setup Outlook. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo      3) Login MS Communicator. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo      4) Manually delete C:\ProgramData\Microsoft\Windows\Start Menu >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat""
echo echo         Start Menu\Programs\Startup\rebuild.bat (if present). >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo      5) Delete C:\Users\%name%.bak >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo         when profile has been verified! >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo echo. >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo pause >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo attrib -h -r -s C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo del /q C:\rbexclude.txt >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo attrib -h -r -s "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat" >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo del /s /q "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat" >>"%drv%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rebuild.bat"
echo .tmp >"%drv%\rbexclude.txt"
echo .err >>"%drv%\rbexclude.txt"
echo .ost >>"%drv%\rbexclude.txt"
echo .oab >>"%drv%\rbexclude.txt"
echo .mp3 >>"%drv%\rbexclude.txt"
echo .mp4 >>"%drv%\rbexclude.txt"
echo .wma >>"%drv%\rbexclude.txt"
echo extend.dat >>"%drv%\rbexclude.txt"
echo extend.dat _ActiveCACBAK >>"%drv%\rbexclude.txt"
goto regedit

:failed
cls
color c0
echo.
echo ********************** ERROR ***********************
echo.
echo The %name% profile could not be backed up.
echo Unable to rebuild this profile.
echo This script will now exit.
echo.
echo ****************************************************
echo.
echo.
pause
exit

:regedit
cls
:regedit /EXPORT \\%comp%\c$\Temp\Printers.reg "HKEY_CURRENT_USER\Printers"
COLOR 4F
echo.
echo *************** WARNING WARNING WARNING WARNING WARNING ***********************   
echo.
echo Before continuing, You must now delete the profile registry and related
echo GUID keys. Run REGEDIT as administrator!
echo.
echo HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
echo.
echo and
echo.
echo HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid
echo.
echo NOTE: There is not GUID for 64 Bit Windows.
echo.
echo *************** WARNING WARNING WARNING WARNING WARNING ***********************   
echo.
pause
COLOR 07
goto complete

:complete
cls
echo.
echo.
echo Profile rebuild is now ready to run!
echo.
echo Please have the user login now.  You will still need to:
echo      1) Manually re-map printers.
echo      2) Manually setup Outlook.
echo      3) Manually login MS Communicator if not signed in already.
echo      4) Manually delete C:\ProgramData\Microsoft\Windows\
echo         Start Menu\Programs\Startup\rebuild.bat (if present).
echo      7) Manually delete C:\Users\%name%.bak
echo         when profile has been verified.
echo.
pause

:end
0

I actually just went though the same thing!! Ok so the following "code" I threw together is in batch because it was easy and lightweight. It ain't pretty but it gets the job done.

Steps it does:

  1. Connects to the machine and user profile. If the machine is offline, it will tell you. If the username provided doesn't match a profile, it will return a list of profiles on the computer so you can match the caller to the correct profile.
  2. Backs up EFS Certificates to desktop.
  3. Network drives and printers backed up to a text file on user's desktop.
  4. User is automatically logged off
  5. Appends 'old_' to the beginning of the local profile name and the date and time of rebuild to the end.
  6. Backup of the profile registry key exported the old profile's 'Contacts' folder and then deletes it from the hive.
  7. Copies a 'Profile Migration Tool' to the user's Desktop. This will move all the data from the old profile to the rebuilt one. It also copies the "Map all PST files.vbs" file found in Fix Pack. The "Map all PST files.vbs" file is automatically launched after all the data is migrated
  8. After all steps are complete, Outlook launches

Step 1: You need to backup their data so here's that. Save it as Backup.bat

@title Profile Data Backup Tool v1.53
@echo off
echo.
echo.

if exist %USERPROFILE%\desktop\EFSCertBackup.cer del %USERPROFILE%\desktop\EFSCertBackup.cer
>goto :deletePFXFile

:deletePFXFile
if exist %USERPROFILE%\desktop\EFSCertBackup.pfx del %USERPROFILE%\desktop\EFSCertBackup.pfx
goto :backupefscerts

echo.
:backupefscerts
REM back up EFS Certs
echo This is a password you will create. If you do not want to create a password, press 'Enter' twice.
echo.
    cipher /r:%USERPROFILE%\desktop\EFSCertBackup

REM back up network drives
    net use > %USERPROFILE%\Desktop\NetworkDrivesandPrinters.txt
REM back up network printers
    Cscript %WINDIR%\System32\Printing_Admin_Scripts\en-US\Prnmngr.vbs -l >> %USERPROFILE%\Desktop\NetworkDrivesandPrinters.txt

REM backup the registry key
set THEME_REGKEY="HKLM\SOFTWARE\Wow6432Node\Network Associates\ePolicy Orchestrator\Agent"
set THEME_REGVAL=LoggedOnUser

REM Check for presence of key first.
reg query %THEME_REGKEY% /v %THEME_REGVAL% || (echo No theme name present! & pause & exit /b 1)

REM query the value. pipe it through findstr in order to find the matching line that has the value. only grab token 3 and the remainder of the line. %%b is what we are interested in here.
set THEME_NAME=
for /f "tokens=2,*" %%a in ('reg query %THEME_REGKEY% /v %THEME_REGVAL% ^| findstr %THEME_REGVAL%') do (
    set THEME_NAME=%%b
) 

REM replace any spaces with +
set THEME_NAME=%THEME_NAME: =+%

echo.
echo Please wait. This window will close automatically once the tool is done running.
echo Please inform the agent once this window closes.
wmic useraccount where (name='%THEME_NAME%') get sid >SID.txt
powershell -Command "(gc SID.txt) -replace 'SID', '' | Out-File SID.txt"
powershell -Command "(gc SID.txt) -replace ' ', '' | Out-File SID.txt"
powershell -Command "(gc SID.txt) | ? {$_.trim() -ne '' } | set-content SID.txt"
for /f "delims=" %%x in (SID.txt) do set SID=%%x
reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%SID%" "%Userprofile%\contacts\oldprofileBackupKey.reg"
shutdown.exe /l /f
(goto) 2>nul & del "%~f0"

2. This will map any and all PST files the user has. Save it as "Map All PST Files.vbs"

    On error resume next

    Dim objFSO
    Dim objWSH
    Dim objWMIService
    Dim colProcess
    Dim objProcess
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWSH = CreateObject("Wscript.Shell")
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Dim strUserProfile
    Dim OutlookOpen
    strUserProfile = objWSH.ExpandEnvironmentStrings("%USERPROFILE%")

    objWSH.Run "%COMSPEC% /c DIR " & CHR(34) & strUserProfile & "\*.pst" & CHR(34) & " /b /s>" & CHR(34) & strUserProfile & "\My Documents\PST Locations.txt""", 0, True
    objWSH.Run "%COMSPEC% /c DIR H:\*.pst /b /s>>" & CHR(34) & strUserProfile & "\My Documents\PST Locations.txt""", 0, True

    If Not objFSO.FileExists(strUserProfile & "\My Documents\PST Locations.txt") Then
        Done()
    End If

    Dim AppOutlook, OutlookNS, Path, objfile, Line

    Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process")
    For Each objProcess In colProcess
        If objProcess.Name = "OUTLOOK.EXE" Then OutlookOpen = True
    Next


    Set AppOutlook = CreateObject("Outlook.Application")
    If err.number <> 0 Then
        Set AppOutlook = GetObject(,"Outlook.Application")
    End If

    Set OutlookNS = AppOutlook.GetNameSpace("MAPI")

    Set objfile = objFSO.opentextfile(strUserProfile & "\My Documents\PST Locations.txt")
    Do Until objfile.AtEndOfStream
    Line=objfile.readline
    If instr(Line, "No PST mappings found") Then
        Done()
    Else
        OutlookNS.AddStore Line
    End If
    Loop

    If Not OutlookOpen Then
        AppOutlook.Session.Logoff
        AppOutlook.Quit
    End If
    objfile.close
    Set objfile = Nothing
    Set AppOutlook = Nothing
    Set OutlookNS = Nothing

    Done()

    Sub Done()
        MSGBOX "Remapping of PST(s) is complete.  Please ensure that your PST(s) have been remapped succesfully."
        If Not OutlookOpen Then objWSH.Run "%COMSPEC% /c Start Outlook",0,False
        objFSO.DeleteFile(strUserProfile & "\Desktop\Map All PST Files.vbs")
        Wscript.Quit
    End Sub

3. This is the part that will move all of their data from the old profile to the new one. Save it as "Profile Migration Tool.bat"

@echo off
set THEME_REGKEY="HKLM\SOFTWARE\Wow6432Node\Network Associates\ePolicy Orchestrator\Agent"
set THEME_REGVAL=LoggedOnUser
cls
REM Check for presence of key first.
reg query %THEME_REGKEY% /v %THEME_REGVAL% || (echo No theme name present! & pause & exit /b 1)
cls
REM query the value. pipe it through findstr in order to find the matching line that has the value. only grab token 3 and the remainder of the line. %%b is what we are interested in here.
set THEME_NAME=
for /f "tokens=2,*" %%a in ('reg query %THEME_REGKEY% /v %THEME_REGVAL% ^| findstr %THEME_REGVAL%') do (
    set THEME_NAME=%%b
)
cls
set /p content=<oldprofile.txt
robocopy "%content%\Contacts" "C:\Users\%THEME_NAME%\Contacts" /MIR /E /E /COPY:DAT /IS /XA:SHT /XF *.ini /R:2 /W:5
robocopy "%content%\Downloads" "C:\Users\%THEME_NAME%\Downloads" /MIR /E /COPY:DAT /XA:SHT /XF *.ini /R:2 /W:5
robocopy "%content%\Documents" "C:\Users\%THEME_NAME%\Documents" /MIR /E /COPY:DAT /IS /XA:SHT /XD "My Music" /XD "My Pictures" /XD "My Videos" /XF *.ini /R:2 /W:5
robocopy "%content%\Desktop" "C:\Users\%THEME_NAME%\Desktop" /MIR /E /COPY:DAT /IS /XA:SHT /XF *.ini /R:2 /W:5
robocopy "%content%\Favorites" "C:\Users\%THEME_NAME%\Favorites" /MIR /E /COPY:DAT /IS /XA:SHT /XF *.ini /R:2 /W:5
robocopy "%content%\Links" "C:\Users\%THEME_NAME%\Links" /MIR /E /COPY:DAT /IS /XA:SHT /XF *.ini /R:2 /W:5
robocopy "%content%\Music" "C:\Users\%THEME_NAME%\Music" /MIR /E /COPY:DAT /IS /XA:SHT /XF *.ini /R:2 /W:5
robocopy "%content%\Pictures" "C:\Users\%THEME_NAME%\Pictures" /MIR /E /COPY:DAT /IS /XA:SHT /XF *.ini /R:2 /W:5
robocopy "%content%\Videos" "C:\Users\%THEME_NAME%\Videos" /MIR /E /COPY:DAT /IS /XA:SHT /XF *.ini /R:2 /W:5
robocopy "%content%" "C:\Users\%THEME_NAME%\Documents" /COPY:DAT /IS /XD /XF ntuser.* /XF *.ini /R:2 /W:5
killtask /im outlook.exe
cd %currentuser%\Desktop
wscript "MAP ALL PST Files.vbs" //e:vbscript
del oldprofile.txt
del "%~f0"&exit

4. This is the holy grail. The part that actually rebuilds the profile. It does have to be run as an admin. Save it as RAP.bat:

    @title Rebuild a Profile Tool Version 3.0
    @echo off
    :beginning
    set THEME_REGKEY="HKLM\SOFTWARE\Wow6432Node\Network Associates\ePolicy Orchestrator\Agent"
    set THEME_REGVAL=LoggedOnUser

    REM Check for presence of key first.
    reg query %THEME_REGKEY% /v %THEME_REGVAL% || (echo No theme name present! & pause>nul & exit /b 1)

    REM query the value. pipe it through findstr in order to find the matching line that has the value. only grab token 3 and the remainder of the line. %%b is what we are interested in here.
    set THEME_NAME=
    for /f "tokens=2,*" %%a in ('reg query %THEME_REGKEY% /v %THEME_REGVAL% ^| findstr %THEME_REGVAL%') do (
        set THEME_NAME=%%b
    )

    set RAPPath="\\127.0.0.1\C$\Program Files\HDUTILS\RAP"
    cls

    :connectIn
        set /p remotepc= Enter the remote computer name or IP address: 
    if exist \\%remotepc%\C$\Users\ goto :inputUsername
    echo Instruct user to restart the machine and log in.
    SET tmout=3
    PING 1.2.1.2 -n 1 -w %tmout%000 > NUL
    echo.
    goto :connectIn

    :inputUsername
        set /p remoteuser= Enter remote user's username: 
    if exist \\%remotepc%\C$\Users\%remoteuser%\ goto :choice
    echo Invalid username. Please verify the spelling and try again.
    SET tmout=3
    PING 1.2.1.2 -n 1 -w %tmout%000 > NUL
    dir \\%remotepc%\C$\Users\
    goto :inputUsername
    echo.


    :choice
    echo.
    FOR %%? IN (\\%remotepc%\C$\Users\%remoteuser%\NTUSER.DAT) DO (ECHO %remoteUser%'s %%~n?%%~x? file size is %%~z? bytes)
    echo Profile corruption typically occurs around 5000000 bytes. 
    echo.
    REM This user's NTUSER.DAT file is over by ___ bytes.
    set /P continue=Do you want to continue rebuilding this profile?[Y/N] 
    if /I "%continue%" EQU "Y" goto :sendBackup
    if /I "%continue%" EQU "y" goto :sendBackup
    if /I "%continue%" EQU "N" goto :abandon
    if /I "%continue%" EQU "n" goto :abandon
    echo.
    echo Error: Invalid Parameter. Please press either "y" or "n" to continue.
    echo.
    goto :choice

    :abandon
    cls
    echo Standby. Restarting program...
    SET tmout=3
    PING 1.2.1.2 -n 1 -w %tmout%000 > NUL
    goto :beginning


    REM Copy over the EFS Cert backup file

    :sendBackup
    set remoteuserdesktop=\\%remotepc%\C$\Users\%remoteuser%\Desktop
        robocopy %RAPPath%\ %remoteuserdesktop%\ Backup.bat
    echo.
    echo.
    echo.
    echo Instruct the user to run the file named Backup.bat on their desktop and 
    echo let you know when it finishes. When it is done running, the command window 
    echo will close and 3 files should have appeared on the Desktop. Tell them to
    echo inform you when they see the Ctrl + Alt + Del screen. 
    echo.
    echo.
    echo.

    :SIDexist
    if exist \\%remotepc%\c$\users\%remoteuser%\Desktop\SID.txt goto :copySID
    goto :SIDexist

    :copySID
    robocopy %remoteuserdesktop%\ %RAPPath%\ SID.txt

    del %remoteuserdesktop%\SID.txt
    echo Press any key to rename the profile...
    echo.
    echo.
    pause>nul


    :rename
     Set CURRDATE=%TEMP%\CURRDATE.TMP

     Set CURRTIME=%TEMP%\CURRTIME.TMP 
    DATE /T > %CURRDATE%
     TIME /T > %CURRTIME%

    Set PARSEARG="eol=; tokens=1,2,3,4* delims=/, "
     For /F %PARSEARG% %%i in (%CURRDATE%) Do SET YYYYMMDD=%%l%%k%%j

    Set PARSEARG="eol=; tokens=1,2,3* delims=:, "
     For /F %PARSEARG% %%i in (%CURRTIME%) Do Set HHMM=%%i%%j%%k

    Echo RENAME \\%remotepc%\C$\Users\%remoteuser% old_%remoteuser%_%YYYYMMDD%%HHMM%
    RENAME \\%remotepc%\C$\Users\%remoteuser% old_%remoteuser%_%YYYYMMDD%%HHMM%
    set oldusername=old_%remoteuser%_%YYYYMMDD%%HHMM%
    echo old_%remoteuser%_%YYYYMMDD%%HHMM% >oldprofile.txt
    powershell -Command "(gc oldprofile.txt) -replace ' ', '' | Out-File oldprofile.txt"
    powershell -Command "(gc oldprofile.txt) | ? {$_.trim() -ne '' } | set-content oldprofile.txt"


    :choice2
    if exist \\%remotepc%\C$\Users\old_%remoteuser%_%YYYYMMDD%%HHMM% goto :regKeyDelete
    goto :uhoh

    :uhoh
    echo Inform the user you will restart their computer momentarily. Tell them to let 
    echo you know when they see the 'Ctrl + Alt + Del'screen. 
    echo Verify network connectivity with the ping that is now running.
    shutdown /r /m \\%remotepc% /c "Computer will not rename profile. When prompted for a green shutdown, press no. Press OK to continue." /d p:0:0
    start cmd.exe @cmd /k "ping -t %remotepc%"
    echo.
    echo Wait 60 seconds after the machine comes back online, then press any key to 
    echo continue the rebuild...
    pause>nul
    goto :rename2

    :rename2
     Set CURRDATE=%TEMP%\CURRDATE.TMP

     Set CURRTIME=%TEMP%\CURRTIME.TMP 
    DATE /T > %CURRDATE%
     TIME /T > %CURRTIME%

    Set PARSEARG="eol=; tokens=1,2,3,4* delims=/, "
     For /F %PARSEARG% %%i in (%CURRDATE%) Do SET YYYYMMDD=%%l%%k%%j

    Set PARSEARG="eol=; tokens=1,2,3* delims=:, "
     For /F %PARSEARG% %%i in (%CURRTIME%) Do Set HHMM=%%i%%j%%k

    Echo RENAME \\%remotepc%\C$\Users\%remoteuser% old_%remoteuser%_%YYYYMMDD%%HHMM%
    RENAME \\%remotepc%\C$\Users\%remoteuser% old_%remoteuser%_%YYYYMMDD%%HHMM%
    set oldusername=old_%remoteuser%_%YYYYMMDD%%HHMM%
    echo old_%remoteuser%_%YYYYMMDD%%HHMM% >oldprofile.txt
    powershell -Command "(gc oldprofile.txt) -replace ' ', '' | Out-File oldprofile.txt"
    powershell -Command "(gc oldprofile.txt) | ? {$_.trim() -ne '' } | set-content oldprofile.txt"
    goto :choice3

    :choice3
    echo.
    if exist \\%remotepc%\C$\Users\old_%remoteuser%_%YYYYMMDD%%HHMM% goto :regKeyDelete
    goto :rename2

    :regKeyDelete
    REM Delete registry key
    cd "C:\Program Files\HDUTILS\RAP\"
        set /p Build=<SID.txt
        reg delete "\\%remotepc%\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%Build%"
    echo \\%remotepc%\C$\Users\old_%remoteuser%_%YYYYMMDD%%HHMM% >oldprofile.txt
    echo.
    echo. 
    echo Instruct the User to log in.
    SET tmout=3
    PING 1.2.1.2 -n 1 -w %tmout%000 > NUL
    echo Waiting on customer login...
    echo.

    :listrebuilt
    if exist \\%remotepc%\C$\Users\%remoteuser%\Desktop goto :nextplease
    goto :listrebuilt

    :nextplease
    set remoteuserdesktop=\\%remotepc%\C$\Users\%remoteuser%
    powershell -Command "(gc oldprofile.txt) -replace ' ', '' | Out-File oldprofile.txt"
    powershell -Command "(gc oldprofile.txt) | ? {$_.trim() -ne '' } | set-content oldprofile.txt"

    :copymigrationTools
    robocopy %RAPPath%\ %remoteuserdesktop%\ oldprofile.txt
    robocopy %RAPPath%\ %remoteuserdesktop%\ "Profile Migration Tool.bat"
    robocopy %RAPPath%\ %remoteuserdesktop%\ "Map All PST files.vbs"

    :checkFiles
    if exist %remoteuserdesktop%\oldprofile.txt goto :checkPMT
    goto :recopyProfile

    :checkPMT
    if exist "%remoteuserdesktop%\Profile Migration Tool.bat" goto :checkPST
    goto :recopyPMT

    :checkPST
    if exist "%remoteuserdesktop%\Map All PST files.vbs" goto :finish
    goto :recopyPST



    :recopyProfile
    robocopy %RAPPath%\ %remoteuserdesktop%\ oldprofile.txt
    goto :checkFiles

    :recopyPMT
    robocopy %RAPPath%\ %remoteuserdesktop%\ "Profile Migration Tool.bat"
    goto :checkFiles

    :recopyPST
    robocopy %RAPPath%\ %remoteuserdesktop%\ "Map All PST files.vbs"
    goto :checkFiles


    :finish
    echo.
    echo You have completed your end of the rebuild. MSRA in (to monitor everything)
    echo and run 'Profile Migration Tool.bat' file to begin the migration process.
    echo While everything is migrating, verify the user knows how to map network drives 
    echo and printers.
    echo restart in 20 seconds.
    (
    echo Profile Rebuilt 
    echo Backup up EFS Certificates to desktop. 
    echo Network drives and printers backed up to a text file on user's desktop. 
    echo Appended 'old_' to the beginning of the local profile name and the date and time of rebuild to the end. 
    echo Backup of the profile registry key exported the old profile's 'Contacts' folder. 
    echo Agent instructed the user to log in. 
    echo Copied the Profile Migration Tool to the user's Desktop. 
    echo Data copied from old profile, EFS certificates restored        ) | clip
    echo.
    echo A copy of all steps taken have been sent to the clipboard. Please paste these into your ticket.
    SET tmout=10
    PING 1.2.1.2 -n 1 -w %tmout%000 > NUL
    goto :beginning