diff --git a/buildroot/bin/build_all_examples b/buildroot/bin/build_all_examples
index 91870ab156..bce95dce88 100755
--- a/buildroot/bin/build_all_examples
+++ b/buildroot/bin/build_all_examples
@@ -30,24 +30,37 @@ echo "This script downloads all Configurations and builds Marlin with each one."
 echo "On failure the last-built configs will be left in your working copy."
 echo "Restore your configs with 'git checkout -f' or 'git reset --hard HEAD'."
 
+unset BRANCH
+unset FIRST_CONF
+if [[ -f "$STAT_FILE" ]]; then
+  IFS='*' read BRANCH FIRST_CONF <"$STAT_FILE"
+fi
+
 # If -c is given start from the last attempted build
 if [[ $1 == '-c' ]]; then
-  if [[ -f "$STAT_FILE" ]]; then
-    read BRANCH FIRST_CONF <"$STAT_FILE"
-  else
+  if [[ -z $BRANCH || -z $FIRST_CONF ]]; then
     echo "Nothing to continue"
     exit
   fi
+elif [[ $1 == '-s' ]]; then
+  if [[ -n $BRANCH && -n $FIRST_CONF ]]; then
+    SKIP_CONF=1
+  else
+    echo "Nothing to skip"
+    exit
+  fi
 else
   BRANCH=${1:-"import-2.0.x"}
   FIRST_CONF=$2
 fi
 
 # Check if the current repository has unmerged changes
-if [[ -z "$FIRST_CONF" ]]; then
-  git diff --quiet || { echo "The working copy is modified. Commit or stash changes before proceeding."; exit ; }
-else
+if [[ $SKIP_CONF ]]; then
+  echo "Skipping $FIRST_CONF"
+elif [[ $FIRST_CONF ]]; then
   echo "Resuming from $FIRST_CONF"
+else
+  git diff --quiet || { echo "The working copy is modified. Commit or stash changes before proceeding."; exit ; }
 fi
 
 # Create a temporary folder inside .pio
@@ -67,12 +80,19 @@ shopt -s nullglob
 IFS='
 '
 CONF_TREE=$( ls -d "$TMP"/config/examples/*/ "$TMP"/config/examples/*/*/ "$TMP"/config/examples/*/*/*/ "$TMP"/config/examples/*/*/*/*/ | grep -vE ".+\.(\w+)$" )
+DOSKIP=0
 for CONF in $CONF_TREE ; do
+  # Get a config's directory name
   DIR=$( echo $CONF | sed "s|$TMP/config/examples/||" )
-  [[ ! -z $FIRST_CONF ]] && [[ $FIRST_CONF != $DIR && "$FIRST_CONF/" != $DIR ]] && continue
+  # If looking for a config, skip others
+  [[ $FIRST_CONF ]] && [[ $FIRST_CONF != $DIR && "$FIRST_CONF/" != $DIR ]] && continue
+  # Once found, stop looking
   unset FIRST_CONF
+  # If skipping, don't build the found one
+  [[ $SKIP_CONF ]] && { unset SKIP_CONF ; continue ; }
+  # ...if skipping, don't build this one
   compgen -G "${CONF}Con*.h" > /dev/null || continue
-  echo -e "$BRANCH\n$DIR" >"$STAT_FILE"
+  echo "${BRANCH}*${DIR}" >"$STAT_FILE"
   "$HERE/build_example" "internal" "$TMP" "$DIR" || { echo "Failed to build $DIR"; exit ; }
 done
 
diff --git a/buildroot/bin/build_example b/buildroot/bin/build_example
index 3c19b7b626..8ebb58f972 100755
--- a/buildroot/bin/build_example
+++ b/buildroot/bin/build_example
@@ -24,6 +24,6 @@ cp "$SUB"/_Statusscreen.h     Marlin/ 2>/dev/null
 
 echo "Building the firmware now..."
 HERE=`dirname "$0"`
-$HERE/mftest -a || { echo "Failed"; exit 1; }
+$HERE/mftest -a -n1 || { echo "Failed"; exit 1; }
 
 echo "Success"
diff --git a/buildroot/bin/mftest b/buildroot/bin/mftest
index 4626352f7a..00f7a2e7e0 100755
--- a/buildroot/bin/mftest
+++ b/buildroot/bin/mftest
@@ -105,7 +105,7 @@ if ((REBUILD)); then
   # Build with the last-built env
   [[ -f "$STATE_FILE" ]] || { errout "No previous (-r) build state found." ; exit 1 ; }
   read TESTENV <"$STATE_FILE"
-  pio run -d . -e $TESTENV
+  pio run -s -d . -e $TESTENV
   exit
 fi
 
@@ -192,7 +192,7 @@ if ((AUTO_BUILD)); then
     pio run -t upload -e $TARGET
   else
     echo "Building environment $TARGET for board $MB ($BNUM)..." ; echo
-    pio run -e $TARGET
+    pio run -s -e $TARGET
   fi
   exit
 fi
@@ -307,6 +307,6 @@ fi
 
 [[ $BUILD_YES == 'Y' || $BUILD_YES == 'Yes' ]] && {
   ((USE_MAKE)) && make tests-single-local TEST_TARGET=$TESTENV ONLY_TEST=$CHOICE
-  ((USE_MAKE)) || pio run -d . -e $TESTENV
+  ((USE_MAKE)) || pio run -s -d . -e $TESTENV
   echo "$TESTENV" >"$STATE_FILE"
 }