Почему появляется сообщение об ошибке, когда сравнение `IF` выполняется в команде piped block?

Я упростил код. Следующие три работы.

for /L %a in (1,1,9) do @(if %a NEQ 0 (echo %a))

&

for /L %a in (1,1,9) do @(if not %a == 0 (echo %a))

&

(for /L %a in (1,1,9) do @(if not %a == 0 (echo %a)))|sort /R

Но следующий не сработал,

(for /L %,a in (1,1,9) do @(if %a NEQ 0 (echo %a)))|sort /R

В чем проблемаNEQ в команде переданного по трубопроводу блока?

более упрощенный,

Это работает,(if 3 == 3 echo yes)|sort

Это не работает,(if 3 NEQ 2 echo yes)|sort

Часть моего кода.

@echo off
setlocal enabledelayedexpansion
set Unx_path=.....\bin\UnxUtils\
(
for /F %%a in ('^""%Unx_path%pclip.exe"^|"%Unx_path%sed.exe" -r "s/^^$/none/"^|"%Unx_path%sed.exe" -rf "script_file"^"') do @(
  if not "%%a" == "none" (
    "%Unx_path%grep.exe" -iEe "%%a" "file4search"|"%Unx_path%sed.exe" -r "s/^^[^,]+$/,&/";"s/^^([^.]+)[.][^.]+$/\1/"|"%Unx_path%gawk.exe" "BEGIN{FS=\",\";ORS=\" \"}{print $2}"|"%Unx_path%sed.exe" "s/%%a//I g";"s/.*/%%a &|/";"s/ -/ /g";"s/ |/\n/g";"s/ /\t/g";"s/~/\t/g"
  ) else (
    echo none
  )
)
)|"%Unx_path%gclip.exe"
exit /b

Ответы на вопрос(4)

Ваш ответ на вопрос