How to delete data extensions if I can't access them?

Using the SOAP API you can retrieve all data extensions older than a certain date (using a simple filter) in order to retrieve all the keys. In following calls you can delete all of these data extensions.

In order to fetch all the relevant data extensions you just need to change the filter in the example request of technical article page Retrieve Data Extension Object Using Customer Key

I suggest writing this in a small program/script (for example using NodeJS, Python, etc.) in order to reduce manual work here. For that purpose, you can use one of these SDKs to ease development: Introduction to Marketing Cloud Platform SDKs

Helpful resources:

  • SOAP API Documentation - Data Extension Object
  • SOAP API Documentation - Delete a Data Extension
  • Retrieve Data Extension Object Using Customer Key

As @MarkusSlabina said, you need to utilize the SOAP API, I just wanted to provide a couple sample envelopes for you to work off of:

Retrieve:

       <RetrieveRequest>
          <ObjectType>DataExtension</ObjectType>
          <Properties>CustomerKey</Properties>
          <Properties>Name</Properties>
          <Properties>ObjectID</Properties>
          <Properties>CreatedDate</Properties>
            <Filter xsi:type="ns1:SimpleFilterPart" xmlns:ns1="http://exacttarget.com/wsdl/partnerAPI">
           <Property>CreatedDate</Property>
           <SimpleOperator>greaterThan</SimpleOperator>
           <Value>01/01/2019</Value>
        </Filter> 
       </RetrieveRequest>

From the retrieve you will need to grab the CustomerKey from each item in results where you can then do a bulk delete inside of the next envelope so it does not require multiple calls per Retrieve.

  <DeleteRequest xmlns="http://exacttarget.com/wsdl/partnerAPI">
     <Options></Options>
     <Objects xsi:type="DataExtension">
        <PartnerKey xsi:nil="true"></PartnerKey>
        <ObjectID xsi:nil="true"></ObjectID>
        <CustomerKey>myDE1</CustomerKey>
     </Objects>
     <Objects xsi:type="DataExtension">
        <PartnerKey xsi:nil="true"></PartnerKey>
        <ObjectID xsi:nil="true"></ObjectID>
        <CustomerKey>myDE2</CustomerKey>
     </Objects>
  </DeleteRequest>

If you are unable to complete this through an external service or application, you can create a script for this via WSProxy and SSJS inside of a script activity and then run it in an automation or by itself. There are a couple undocumented REST endpoints you can use to interact with Script Activities if you cannot access the UI. Check out this post on my blog for some examples.