To convert base voltage to a current, you need a resistor in the emitter circuit. As follows:
simulate this circuit – Schematic created using CircuitLab
No need for a base resistor.
R1 is the load for the 3.3V Zener diode D1, and the base load as well. R2 sets the current. R3 is the load.
There's no need to split the supply voltages, although for now let's keep the split. The load current flows through BAT1. You probably want the load current flowing through BAT2 only:
simulate this circuit
Now, the problem is that the Zener current through D1 depends on Q1's beta: the lower the beta, the more current flows out of the base, and less through D1. We should stabilize the current through D1.
We can add Q2 to decouple the Zener voltage from Q1's base. Even with beta variations, the base current of Q2 through D1 is so small as not to destabilize the Zener voltage much.
simulate this circuit
R4+SW1 can be returned to the load, or to BAT2's negative terminal.
But now SW1 doesn't turn off the Zener, and BAT1 is wasting power. Instead, we can use a scaled current mirror:
simulate this circuit
R5/R2 set the current ratio between Q1/Q2. R1 sets the reference current, based on the Zener voltage buffered by Q3. Q4 buffers Q1's base current and improves the accuracy of the current source. Q1+Q2 must be in thermal contact. Ideally, both would be identical medium-power devices, mounted nearby on the same heatsink. If the dissipation is low, the current sink can be quite small.
Now, instead of using the Zener voltage, we can use the B-E voltage of a bipolar transistor Q2, operating under fixed-current conditions:
simulate this circuit
R2||R9 is the current shunt and also sets the current through Q1. The voltage across the shunt is compared against Q2's VBE. Q2 closes the negative feedback loop and robs Q1's base current as needed to maintain a fixed voltage across the current shunt.
A similar current stabilization loop is implemented by Q3-Q4, to stabilize the collector current of Q2, improving the accuracy of the primary current control loop.
In the two foregoing circuits, BAT1 is optional, and the circuit it feeds can be connected to BAT2 instead.
The approximately 0.7V across the current shunt may not be acceptable if the circuit should operate down to a minimal voltage on BAT2 as it discharges.
A low resistance current shunt can be used if we implement an op-amp:
simulate this circuit
The circuit above operates with current stabilized to about 0.1% from 5V to 30V, and within 1% down to about 3.7V. Transistor matching should be unnecessary, although all NPN and PNP types should be respectively identical, with exception of Q16.
D1 stabilizes the current reference Q1-Q2. The stabilized current is then used to establish the Zener current through D2. R3-R4 is the reference voltage divider, establishing the current setpoint across the shunt R13. The reference current is used to bias the input stages of the differential amplifier, as well as a part of the output stage. To improve performance with discrete components, the current mirrors have strong emitter degeneration. The circuit is quite insensitive to slow changes in the load impedance.