diff --git a/src/sbbs3/upload.cpp b/src/sbbs3/upload.cpp
index 8071e345af7f5a69bd4e97ae30c8e3798c621a04..4ff7f6b48c8887b263c0aa57dd49806d189e63fe 100644
--- a/src/sbbs3/upload.cpp
+++ b/src/sbbs3/upload.cpp
@@ -575,6 +575,11 @@ bool sbbs_t::bulkupload(uint dirnum)
 		sprintf(str,"%s%s",path,dirent->d_name);
 		if(isdir(str))
 			continue;
+#ifdef _WIN32
+		/* Skip hidden/system files on Win32 */
+		if(getfattr(str)&(_A_HIDDEN|_A_SYSTEM))
+			continue;
+#endif
 #ifdef _WIN32
 		GetShortPathName(str,spath,sizeof(spath));
 #else