How to combine two batch operations for views data export into one?
I suppose you should be able to merge them into one module by first checking if the view is available in the batch (stop otherwise) and provide the filename within this check. Code has not been tested though.

function dvm_reports_views_data_export_batch_alter(&amp;$batch, &amp;$batch_redirect) {
  // Check for Denmark.
  if ($view = views_get_view($batch['produkty_denmark_xml'])) {
    $filename = 'denmark.xml';
  }
  // Check for Sweden.
  elseif ($view = views_get_view($batch['produkty_json'])) {
     $filename = 'producty.json';
  }
  // Check for Norway.
  // ... Code goes here

  // Leave if nothing was found.
  else return;

  // Proceed if something was found.

  // Add in another operation that will store the file on the server in a location
  // of our choosing.
  $batch['operations'][] = array(
    'dvm_reports_views_data_export_batch_finish', array($batch['eid'], $filename),
  );
}

function dvm_reports_views_data_export_batch_finish($eid, $filename) {
  $export = views_data_export_get($eid);
  $view = views_data_export_view_retrieve($eid);
  $view-&gt;set_display($export-&gt;view_display_id);
  $view-&gt;display_handler-&gt;batched_execution_state = $export;
  $view-&gt;display_handler-&gt;remove_index();

  // Get path to temp file
  $temp_file = $view-&gt;display_handler-&gt;outputfile_path();
  file_unmanaged_copy($temp_file, 'public://'. $filename, FILE_EXISTS_REPLACE);
}


There might however be a bigger problem with your module. I cannot see your hook menu implementation, but if anonymous users are also able to access domain.com/denmark they could DDoS your site. Prevent that.