One very irritating thing about the Finder is how readily it loses your place.
It took Apple a very long time to fix this relative to delete, and my bugging them about it regularly for years may or may not have contributed to the fix.
I've tried several times to work around the problem with AppleScript – the last time with System Events and GUI-Scripting.
A request came through on the Keyboard Maestro forum for a macro to perform this very chore, so I had another crack at it this evening – and by gum I got it working. Its not pretty, but it's very quick.
# Auth: Christopher Stone
# dCre: 2017/02/26 21:26
# dMod: 2017/02/26 22:10
# Appl: Finder
# Task: Move selected items to a designated folder and SELECT next available item if possible.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Finder, @Move, @Selected, @Items, @Designated, @Folder
------------------------------------------------------------------------------
(*
NOTES:
#### The target folder MUST be sorted by NAME for select-next-item to work properly. ####
*)
------------------------------------------------------------------------------
# Alias -- User Setting
set destinationFolder to alias ((path to home folder as text) & "test_directory:Destination_Directory:")
------------------------------------------------------------------------------
# HFS Path String
set destinationFolderPath to destinationFolder as text
tell application "Finder"
set winTarget to insertion location as alias
set finderSelectionList to selection as alias list
if finderSelectionList = {} then
beep
return
end if
set winTargetItemNameList to list folder winTarget without invisibles
set itemName to name of (last item of finderSelectionList)
set AppleScript's text item delimiters to itemName
move finderSelectionList to destinationFolder
delay 0.05
set AppleScript's text item delimiters to linefeed
set winTargetItemNameList to winTargetItemNameList as text
set AppleScript's text item delimiters to itemName
set winTargetItemNameList to text items of winTargetItemNameList
if length of winTargetItemNameList = 2 then
try
set winTargetItemNameList to item 2 of winTargetItemNameList
repeat while character 1 of winTargetItemNameList is linefeed
set winTargetItemNameList to text 2 thru -1 of winTargetItemNameList
end repeat
set itemName to paragraph 1 of winTargetItemNameList
set selectItemPath to ((winTarget as text) & (paragraph 1 of winTargetItemNameList)) as alias
tell front window to select selectItemPath
end try
end if
end tell
------------------------------------------------------------------------------
Enjoy.