code: def msvc_batch_key(action, env, target, source):
      
  
      # Fixing MSVC_BATCH mode. Previous if did not work when MSVC_BATCH
      # was set to False. This new version should work better.
      # Note we need to do the env.subst so $MSVC_BATCH can be a reference to
      # another construction variable, which is why we test for False and 0
      # as strings.
      if not 'MSVC_BATCH' in env or env.subst('$MSVC_BATCH') in ('0', 'False', '', None):
          # We're not using batching; return no key.
          return None
      t = target[0]
      s = source[0]
      if os.path.splitext(t.name)[0] != os.path.splitext(s.name)[0]:
          # The base names are different, so this *must* be compiled
          # separately; return no key.
          return None
      return (id(action), id(env), t.dir, s.dir)
docs: Returns a key to identify unique batches of sources for compilation.
  
      If batching is enabled (via the $MSVC_BATCH setting), then all
      target+source pairs that use the same action, defined by the same
      environment, and have the same target and source directories, will
      be batched.
  
      Returning None specifies that the specified target+source should not
      be batched with other compilations.