gpt4 book ai didi

batch-file - 为什么在管道 block 命令中进行 `IF` 比较时会出现错误消息?

转载 作者:行者123 更新时间:2023-12-02 17:28:42 25 4
gpt4 key购买 nike

我简化了代码。以下三个是工作。

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

管道 block 命令中的NEQ有什么问题?

更加简化,

这有效,(if 3 == 3 echo yes)|sort

这不起作用,(如果 3 NEQ 2 echo yes)|排序

我的代码的一部分。

@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

最佳答案

试试这个:

set "myline=if 3 NEQ 2 echo yes"

( %myLin^e%)|sort

或来自批处理文件(双重扩展的工作方式与批处理文件和控制台不同):

set "myline=if 3 NEQ 2 echo yes"

( %%myLine%%)|sort

这个“谜团”被jeb解开了 herehere 。尽管您在管道之前遇到了这个问题,但它是相同的错误,因为 cmd 在管道的每一侧创建了两个线程。

以下是如何使 for 循环工作:

set "line=if %a NEQ 0"
(for /L %a in (1,1,9) do @( %lin^e% echo %a))|sort /R

关于batch-file - 为什么在管道 block 命令中进行 `IF` 比较时会出现错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36763782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com