diff --git a/src/sbbs3/bat_xfer.cpp b/src/sbbs3/bat_xfer.cpp
index 9ad5fba71bc0179152b98d2cc9a884a66129cff7..d041096fa4a2469e865b5641ba916698c7b7785a 100644
--- a/src/sbbs3/bat_xfer.cpp
+++ b/src/sbbs3/bat_xfer.cpp
@@ -92,9 +92,13 @@ void sbbs_t::batchmenu()
 				start_batch_download();
 				break;
 			case 'L':
+			{
+				bool sort = !noyes(text[SortAlphaQ]);
 				ini = batch_list_read(&cfg, useron.number, XFER_BATCH_UPLOAD);
 				filenames = iniGetSectionList(ini, NULL);
 				if(strListCount(filenames)) {
+					if(sort)
+						strListSortAlphaCase(filenames);
 					bputs(text[UploadQueueLstHdr]);
 					for(size_t i = 0; filenames[i]; ++i) {
 						const char* filename = filenames[i];
@@ -114,6 +118,8 @@ void sbbs_t::batchmenu()
 				ini = batch_list_read(&cfg, useron.number, XFER_BATCH_DOWNLOAD);
 				filenames = iniGetSectionList(ini, NULL);
 				if(strListCount(filenames)) {
+					if(sort)
+						strListSortAlphaCase(filenames);
 					bputs(text[DownloadQueueLstHdr]);
 					for(size_t i = 0; filenames[i]; ++i) {
 						const char* filename = filenames[i];
@@ -144,6 +150,7 @@ void sbbs_t::batchmenu()
 				iniFreeStringList(filenames);
 				iniFreeStringList(ini);
 				break;
+			}
 			case 'R':
 				if((n = batup_total()) > 0) {
 					bprintf(text[RemoveWhichFromUlQueue], n);