patch 8.1.0468: MS-Windows: filter command with pipe character fails

Problem:    MS-Windows: Filter command with pipe character fails. (Johannes
            Riecken)
Solution:   Find the pipe character outside of quotes. (Yasuhiro Matsumoto,
            closes #1743, closes #3523)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 99c19f9..0a5387c 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1676,6 +1676,26 @@
     apply_autocmds(EVENT_SHELLCMDPOST, NULL, NULL, FALSE, curbuf);
 }
 
+#if !defined(UNIX)
+    static char_u *
+find_pipe(char_u *cmd)
+{
+    char_u  *p;
+    int	    inquote = FALSE;
+
+    for (p = cmd; *p != NUL; ++p)
+    {
+	if (!inquote && *p == '|')
+	    return p;
+	if (*p == '"')
+	    inquote = !inquote;
+	else if (rem_backslash(p))
+	    ++p;
+    }
+    return NULL;
+}
+#endif
+
 /*
  * Create a shell command from a command string, input redirection file and
  * output redirection file.
@@ -1746,7 +1766,7 @@
 	 */
 	if (*p_shq == NUL)
 	{
-	    p = vim_strchr(buf, '|');
+	    p = find_pipe(buf);
 	    if (p != NULL)
 		*p = NUL;
 	}
@@ -1754,7 +1774,7 @@
 	STRCAT(buf, itmp);
 	if (*p_shq == NUL)
 	{
-	    p = vim_strchr(cmd, '|');
+	    p = find_pipe(cmd);
 	    if (p != NULL)
 	    {
 		STRCAT(buf, " ");   /* insert a space before the '|' for DOS */
diff --git a/src/testdir/test_filter_cmd.vim b/src/testdir/test_filter_cmd.vim
index 5aa5fa6..86347ab 100644
--- a/src/testdir/test_filter_cmd.vim
+++ b/src/testdir/test_filter_cmd.vim
@@ -74,3 +74,16 @@
   call assert_equal('filter /pat/ print', s:complete_filter_cmd('filter /pat/ pri'))
   call assert_equal('filter #pat# print', s:complete_filter_cmd('filter #pat# pri'))
 endfunc
+
+func Test_filter_cmd_with_filter()
+  new
+  set shelltemp
+  %!echo "a|b"
+  let out = getline(1)
+  bw!
+  if has('win32')
+    let out = trim(out, '" ')
+  endif
+  call assert_equal('a|b', out)
+  set shelltemp&
+endfunction
diff --git a/src/version.c b/src/version.c
index def449a..d4cccb9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    468,
+/**/
     467,
 /**/
     466,