You can use a trigger (instead of batch) campaign with the Person is Created trigger and an Email Address is Empty filter to delete the person record with an empty Email Address immediately as soon as it gets created in Marketo. However, if you want this record to get created in SFDC first (as you've chosen to not delete it from CRM in the Delete Person flow step in your comment above), you can add a Sync Person to the SFDC flow step first, and then delete it from Marketo.
I wouldn't mind throwing in a 5 minutes Wait step before deleting the person from Marketo. Alternatively, you can also use the Executable campaigns for syncing people over to the SFDC and then deleting it using the Delete Person flow step in the parent campaign.
See the Smart List and Flow snapshots for your reference below:
Smart List:

Flow:

The periodicity is for one time only. "I don't know if that could affect it, because what we want is for this flow to be controlled every time a new person enters if they don't have email."
I don't know what other information I can provide.
Well, after a person record is deleted from the Marketo database, Marketo doesn't remember enough about it to prevent it from re-entering the campaign flow, even if the campaign allows each record to run through it only once. So Qualification Rules don't matter/are considered for the person being deleted from the database, and they'd run through the campaign if they get re-created given that they qualify to run through the campaign flow.