Script or plugin to send activation email automatically again after 2 hours

wp_users table has user_registered and user_activation_key field that you should use for this.

For the cron job, you should use wp_schedule_event(). It has one disadvantage though.

The action will trigger when someone visits your WordPress site, if the scheduled time has passed.

For a busy site that’s not a problem. But if your site doesn’t have any visitor for 2 hours, then that cron task won’t trigger. There isn’t anything that you can do about it if you need to use wordpress cron job.

In your cron function, you need to query for the users who have registered, but account didn’t activated in the last 2 hours with the help of those two fields.

EDIT:

You can check for users who have registered, but didn’t activate their account in the last hour with the following code –

global $wpdb;
$users = $wpdb->select_results("SELECT * FROM $wpdb->users
                               WHERE user_activation_key = ''
                                 AND user_registered >= NOW() - INTERVAL 2 HOUR"
                               );
foreach( $users as $user ) {
    //Send activation mail
}

If you need help with email template, you have to ask the plugin author in WordPress forum support. Plugin support is off topic here.