I've got a slightly different solution to Lindsay's in my Call Of Cthulhu framework. I have a GM token which I move to whichever map I want the players to move to, in the general area where they'll start. I then have the following SummonPlayers macro on the GM token.
<!-- SummonPlayers@GM -->
[H: GMMap = getCurrentMapName()]
[H: GMX = getTokenX(0)]
[H: GMY = getTokenY(0)]
Join me please on [R: macroLink(GMMap,"Summoned@Lib:GM", "gm-self", "map="+GMMap+"; X="+GMX+"; Y="+GMY, "selected")]
This sends a macrolink to the chat window for players to click. If they select their tokens and click it, it launches the Summoned macro on the Lib:GM token, which actually moves them..
<!-- Summoned@Lib:GM -->
[H: NewMapName = getStrProp(macro.args, "map")]
[H: NewX = getStrProp(macro.args, "X")+1d4+1]
[H: NewY = getStrProp(macro.args, "Y")+1d4+1]
[R: token = token.name] relocates to [R:NewMapName]-[R:NewX]:[R:NewY]
[H: moveTokenToMap(token,NewMapName, NewX, NewY)]
This has them appear scattered over a random area near the GM token on the destination map. Once the players all confirm they've moved their tokens, I can Force Players To Current Map/View to get them to view the right area.
This avoids the whole problem of tokens being lost in transit when a player Cuts but can't paste for whatever reason, or having duplicate tokens appearing when players Copy instead of Cut. And it's very quick and easy to use in play without requiring any setting up in advance.