I don't know for certain in current games, but can tell you an answer for Gen II and III for a reference from the code. To sum it up, there is a 1/3 chance of spreading Pokérus.
In Generation II (G/S/C), if you have an infected Pokémon in you party and won a battle, there is a 1/3 chance that it will spread to an adjacent Pokémon (50/50 chance for either above or below the infected one). If the selected adjacent Pokémon is already infected, then skip to the next one in the same direction.
Also note if you have a cured Pokémon (shown by a dot in the status screen), it will stop the spreading. Let me use an example:
My current party is NO, YES, NO, NO, Cured, NO,
in that order. The "NO" are the not infected Pokémon, the YES is infected, and the "Cured" is a cured Pokémon. Now after a battle, there is a 1/3 chance it will spread the infection (from #2 of course), and the selected Pokémon can either be the previous one or the next one. Let's say the virus got spread to the first.
YES, YES, NO, NO, Cured, NO.
Now, the spread will always start from the first Pokémon infected in your party. After a while, the spread will trigger once again (always a 1/3 chance), so the spread starts from Pokémon #1. As it is the first, the spread will go down the list. The next Pokémon is already infected, so it skips it to #3, which is uninfected. Then we have
YES, YES, YES, NO, Cured, NO.
And after a while, the fourth Pokémon will be infected too.
YES, YES, YES, YES, Cured, NO.
Now, the spread will never continue to spread to #6, because #5 is already cured and poses some kind of "sanitary barrier" if you will. That can be easily solved by switching places so #6 is next to an infected one.
Source from GitHub (Crystal version, the same for Gold/Silver)
In Generation III (R/S/E), the chance of spreading the virus after a battle is also 1/3. Now the spreading mechanism is a little more generous. Every infected Pokémon will infect the previous and next one (if not already infected, if they are then it will do nothing). For example,
NO, YES, NO, NO, NO, YES
If the spreading triggers (1/3 chance), then #2 will infect #1 and #3, and #6 will infect #5.
YES, YES, YES, NO, YES, YES
So it is a good advice to scatter the infected Pokémon in your party (slots #2 and #5 in particular) to ensure a faster spreading. Again, cured Pokémon serves as a "sanitary" wall to prevent infection if put in between an infected and uninfected Pokémon.
Last thing to notice is that spreading does not occur on certain battles (Pyramid, Legendary, etc.), but I guess ordinary wild battles should always work.
Source from GitHub (Emerald version, but R/S are similar)
About FireRed and LeafGreen, the code for Pokérus spread is empty (see here). The effects of an infected Pokémon work fine (doubling the EV's), but no spreading or spontaneous infection apparently at all. It makes sense, since they do not have a time feature. Which means, the Pokémon remain infected permanently too.
Ok, so to answer the question, at least in Generation II and III (Hoenn), the chance of spreading after a (usually wild) battle is 1/3. I hope it helps, and feel free to comment if you want to discuss. Probably someone will shed some light on later generations too!