相关疑难解决方法(0)

为什么不需要`call`从管道中涉及的调用批处理脚本返回?

假设存在执行另一个批处理文件(被调用者)的批处理文件(调用者),则call需要使用该命令以便在被调用者完成执行后返回调用者.这是一个例子:

caller.bat:

echo Calling another script...
call callee.bat
echo Returned from callee...
Run Code Online (Sandbox Code Playgroud)

callee.bat(在同一地点):

echo   Being called from caller...
Run Code Online (Sandbox Code Playgroud)

输出将是这个(省略命令echos),表明执行按预期返回:

Calling another script...
  Being called from caller...
Returned from callee...
Run Code Online (Sandbox Code Playgroud)

如果call命令在调用者中被解除,则输出将为:

Calling another script...
  Being called from caller...
Run Code Online (Sandbox Code Playgroud)

但是一旦被调用者涉及管道(|),则call命令是否被使用没有区别.例如:

caller.bat(被调用者保持不变):

echo Calling another script...
break | callee.bat
echo Returned from callee...
Run Code Online (Sandbox Code Playgroud)

输出将是这个,虽然没有call命令.

Calling another script...
  Being called from caller...
Returned from callee...
Run Code Online (Sandbox Code Playgroud)

这种行为的原因是什么,导致执行返回给调用者的原因是什么?

windows cmd pipe batch-file call

6
推荐指数
1
解决办法
529
查看次数

批处理文件不保留变量

当CMD.exe终止时,为什么下面的批处理文件不保留变量

@echo off
cmd /c "set var=hi"
if defined var (echo var is defined ("var=%var%")) else (echo var isn't defined)
pause
exit
Run Code Online (Sandbox Code Playgroud)

有没有办法使用CMD/c,同时保留变量?为什么CMD/c不保留变量?

variables cmd batch-file

5
推荐指数
1
解决办法
791
查看次数

标签 统计

batch-file ×2

cmd ×2

call ×1

pipe ×1

variables ×1

windows ×1