title: "Windows was unexpected at this time" error when trying to compare 2 strings in batch script
body: <p>I am writing a batch script to use USMT to update computers from XP to 7. Because USMT has a scanstate component that needs to be run before the OS upgrade and a loadstate computer that has to be run after the OS upgrade I am trying to use an if statement to check what the operating system is and then run the proper commands. I am new to batch files but from everything I have been reading it seems like I am writing it properly but I am obviously messing up somewhere. I am getting a "Windows is unexpected at this time error." I also know that the variables are being set properly because of the pause commands that I included. I also tried using <code>IF %WINVERSION% == %XP% goto XPTRUE/WIN7TRUE</code> and enclosing everything within the brackets under a <code>:XPTRUE/WIN7TRUE</code> but that gives the same error.</p>
  
  <pre><code>::Don't have commands print...only outputs are printed
  @echo off
  :: Set constants
  SET XP=Microsoft Windows XP [Version 5.1.2600]
  SET WIN7=Microsoft Windows [Version 6.1.7601]
  SET XPUSMTLOCATION=C:\Program Files\USMT\Binaries\v4\x86
  SET 7USMTLOCATION=C:\Program Files (x86)\USMT\Binaries\v4\amd64
  SET BACKUPLOACTION=\\[SERVER IP]\z$\UserAccountBackUps\Backups
  SET LOCALBACKUPLOCATION=C:\Backup\USMT
  SET NASBACKUPLOCATION=S:\UserAccountBackUps\Backups
  @PAUSE
  ::Get the current version of Windows batch file is running on and store it in WINVERSION
  FOR /f "delims=" %%A IN ('ver') DO @SET WINVERSION=%%A
  echo %WINVERSION%
  PAUSE
  ::Get the MAC address of the computer and store it in MACA
  FOR /F %%A IN ('getmac') DO @SET MACA=%%A
  echo The MAC Address is: %MACA%
  :: Tell user about script
  echo This is a script designed to migrate computers with one network card from Windows XP to Windows 7 using USMT, this script should not be used with computers that have multiple network cards
  echo Xp is %XP%
  echo 7 is %WIN7%
  ::Check to see if the current version is XP
  PAUSE
  
  IF %WINVERSION% == %XP% (
  echo This is windows XP
  ::Change directory to the location of USMT files
  cd %XPUSMTLOCATION%
  ::Run scanstate to create backup
  scanstate.exe C:\Backup /i:"\\[SERVER IP]\z$\UserAccountBackUps\USMT_XML_Files\MigApp.xml" /i:"\\[SERVER IP]\z$\UserAccountBackUps\USMT_XML_Files\MigDocs.xml" /i:"\\[SERVER IP]\z$\UserAccountBackUps\USMT_XML_Files\MigUser.xml" /o /v:2
  ::Change directory to the location of where the USMT backup is
  cd %LOCALBACKUPLOCATION%
  ::Rename the backup to the MAC Address
  rename USMT.MIG %MACA%.MIG
  ::Map the NAS to a drive because xcopy can not take IP addresses
  echo Mapping NAS to drive
  ::NAS is mapped to drive S, if S is used for something else change s below to different letter
  net use s: \\[SERVER IP]\z$
  echo Prepairing to copy backup to NAS
  ::Use xcopy to transfer backup file the /v ensures the files are identical
  ::This must be done this way because if USMT tries to backup directly to the NAS it tries to overwrite all existing files
  xcopy %LOCALBACKUPLOCATION%\%MACA%.MIG %NASBACKUPLOCATION% /v
  echo The copy has completed, run this batch file again after OS Upgrade
  )
  
  IF %WINVERSION% == %WIN7% (
  echo This is Windows 7
  PAUSE
  )
  </code></pre>
  
  <p>When I run this on my Windows 7 computer I get this:</p>
  
  <p><img src="https://i.stack.imgur.com/1c0mF.png" alt="image"></p>
  
  <p>I get the same output on my XP computer except it tells me the current version is xp instead. Help would be greatly appreciated. </p>