# process.batch 库模块帮助文档

<details>  <summary>aardio批处理模板语法</summary>  <p>
[aardio 模板语法](https://www.aardio.com/zh-cn/docs/language-reference/templating/syntax.html)

批处理代码中aardio代码必须置于 <? ..... ?> 内部，类似 PHP 的模板语法,
但是要注意与PHP的区别是，aardio规定开始标记  <? 必须独立不能紧跟英文字母，
例如 <?xml.....  不是合法的aardio代码段开始标记(aardio会认为这是一个XML标记)。 
另外，aardio总是忽略文件开始的空白字符（包含空格、制表符，换行）。

aardio将<? ..... ?> 之外的部分解析为： print("批处理代码") 以调用全局函数print输出批处理代码。
print允许接收多个参数，并且对每个参数调用tostring()转换为字符串。

可以使用 <?=表达式?> 输出文本，该代码的作用类似于 print( 表达式 ) , 下面的写法也是允许的
<?
= 表达式
?>

批处理文件应当并且建议以 UTF-8 编码保存，process.batch 会自动转换为 ANSI 编码执行。
</p></details>

[aardio + 批处理混合编程指南](https://www.aardio.com/zh-cn/docs/library-guide/std/process/batch.html)

## process 成员列表 <a id="process" href="#process">&#x23;</a>

### process.batch() <a id="process.batch" href="#process.batch">&#x23;</a>
[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.batch(script,ownerArgs,workDir) <a id="process.batch" href="#process.batch">&#x23;</a>
- 参数 @script 可以是批处理脚本或批处理文件，支持资源文件,  
支持使用 aardio 模板语法嵌入 aardio 代码。  
批处理代码会使用自动生成的临时文件加载执行，对象释放时自动删除临时文件。  
- 可选用 @ownerArgs 指定传递给 aardio 模板代码的 owner 参数,  
@ownerArgs 的数组成员传递给批处理作为启动参数，可用 `%1` `%2` ...接收。  
- 可选用 @workDir 指定工作目录,默认为应用程序目录

## process.batch 成员列表 <a id="process.batch" href="#process.batch">&#x23;</a>

用于加载批处理代码，支持使用 aardio 模板语法嵌入 aardio 代码

创建批处理管道进程。  
用于加载批处理代码，支持使用 aardio 模板语法嵌入 aardio 代码  
优先调用 64 位命令请改为 process.batch.wow64

### process.batch.execute <a id="process.batch.execute" href="#process.batch.execute">&#x23;</a>
运行批处理代码，支持使用 aardio 模板语法嵌入 aardio 代码。  
批处理代码会使用自动生成的临时文件加载执行  
在批处理尾部会自动添加 `del "%~f0"` 以删除临时的批处理文件。  
process.batch.execute 不会像 process.batch 那样负责删除临时批处理文件，  
因此批处理代码如果提前执行 EXIT 命令则应当自行调用 `del "%~f0"` 。  

process.batch.execute 在运行批处理以后立即返回，  
不会像 process.batch 那样创建并返回进程管道对象。  

这个函数可以用于在退出进程后删除 EXE 自身或运行时占用的目录或文件，示例：  
~~~aardio  
process.batch.execute(`:loop  
del /q "<?=io._exepath?>"  
if exist "<?=io._exepath?>" goto loop`)  
~~~

### process.batch.execute(script,ownerArgs,workDir,showCmd,hwnd) <a id="process.batch.execute" href="#process.batch.execute">&#x23;</a>
- 参数 @script 可以是批处理脚本或批处理文件，支持资源文件,  
支持使用 aardio 模板语法嵌入 aardio 代码。  
- 可选用 @ownerArgs 参数指定aardio 模板代码可以调用的 owner 参数,  
@ownerArgs 的数组成员传递给批处理作为启动参数,可用%1 %2 ...接收。  
- 参数 @workDir 指定工作目录，可省略，默认为应用程序目录  
- 参数 @showCmd 可省略，默认为 `0/*_SW_HIDE*/`，也就是隐藏批处理窗口。  
- 参数 @hwnd 用于指定所有者窗口句柄，可省略。

### process.batch.wow64 <a id="process.batch.wow64" href="#process.batch.wow64">&#x23;</a>
创建批处理管道进程,  
禁用64位文件与注册表重定向,  
在64位系统会返回64位进程,兼容32位系统,  
用于加载批处理代码，支持使用 aardio 模板语法嵌入 aardio 代码

### process.batch.wow64() <a id="process.batch.wow64" href="#process.batch.wow64">&#x23;</a>
[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.batch.wow64(script,ownerArgs,workDir) <a id="process.batch.wow64" href="#process.batch.wow64">&#x23;</a>

```aardio
script 参数可以是批处理脚本或批处理文件，支持资源文件,  
支持使用 aardio 模板语法嵌入 aardio 代码,  
批处理代码会使用自动生成的临时文件加载执行,对象释放时自动删除临时文件,  
可选用 @ownerArgs 指定传递给 aardio 模板代码的 owner 参数,  
@ownerArgs 的数组成员传递给批处理作为启动参数，可用 `%1` `%2` ...接收。  
可选用 @workDir 指定工作目录,默认为应用程序目录
```

