Use vbs to batch run commands

本文介绍了一种使用VBS脚本执行命令行工具并将输出重定向到日志文件的方法。通过创建FileSystemObject对象来检查文件是否存在,并记录包含日期和时间的日志条目。此外,还定义了一个运行命令行工具的函数,该函数可以执行指定的命令并分析日志文件以确定是否存在错误。
     
  
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
' The function used to check whether the given file exists.                     '  
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
Function CheckFileExists(strFilePath)   
    set oFSO = createObject("Scripting.FileSystemObject")   
    boolFileExists = oFSO.fileExists(strFilePath)    
    set oFSO = Nothing    
      
    CheckFileExists = boolFileExists   
End Function  

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
' The function used to print log                                                '  
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
Function PrintLog(strLog, logFileName)  
	if not CheckFileExists(logFileName) then
		Set fso = CreateObject("Scripting.FileSystemObject") 
		fso.CreateTextFile logFileName, true
		Set fso = nothing
	end if
	
	Set fso = CreateObject("Scripting.FileSystemObject") 
	Const ForAppending = 8
	Set objLogFile = fso.OpenTextFile(logFileName, ForAppending, True)	
	
	strMsg = Date() & " " & Time() & " " & strLog  
    objLogFile.WriteLine strMsg  
	
	objLogFile.Close()
	Set fso = nothing
End Function 

  
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
' The RunCommandlineTool function execute the specified command-line exe,       '  
' and redirect the command-line print messages to the given log file,           '  
' then analyze the log file to determine whether there are some errors.         '  
'                                                                               '  
' PARAMETERS:                                                                   '  
'   @strCommand: Specify the command string,                                    '  
'   @strRedirectLogFilenamePath: Specify the log file,                          '  
' RETURN:                                                                       '  
'   True : process succeed without any error,                                   '  
'   False: process complete with some errors                                    '                                             
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
Function RunCommandlineTool(strCommand, logFileName)  
    PrintLog """" & strCommand & """" & " Start!", logFileName     
      
    Set WsShell = CreateObject("Wscript.Shell")   
    Dim strShellCommand   
    Dim processNoError  
      
    strShellCommand = "%comspec% /c " & Chr(34) & strCommand & " >> " & logFileName & Chr(34)  
    WsShell.Run strShellCommand, 0, True                                          
    
End Function   


Dim scriptFileName
Dim logFileName
scriptFileName = WScript.Arguments(0)  
logFileName = WScript.Arguments(1)  
  
Set fso1 = createobject("scripting.filesystemobject")  
Set textStream = fso1.OpenTextFile(scriptFileName, 1)  
  
Do While Not textStream.AtEndOfStream  
	cmdLine = trim(textStream.readline)		
	i=i + 1   	
	  
	RunCommandlineTool cmdLine, logFileName   
Loop   
  
Set textStream = Nothing  
Set fso1 = Nothing   
      
    

Sorter 机台采用 **Batch Run(批次运行)** 模式,主要是由其**物理结构、处理逻辑和工艺目的**决定的。它不像标准晶圆传送机器人那样单片操作,而是设计用于对多片晶圆进行集中分类、排序和调度。 --- ### ✅ 一、什么是 Sorter 机台? Sorter 是一种自动化物料搬运设备,常见于前段晶圆厂(Fab)或中测/后封环节,主要功能包括: - 对来自不同来源的 FOUP / POD 中的晶圆进行重新排序(Sorting) - 根据产品类型、流程路径、优先级等规则分配晶圆顺序 - 将晶圆从一个载体(如输入盒)转移到另一个输出载体(如输出盒),实现“换盒 + 排序” - 在测试厂中常用于将待测片按设备负载均衡分发到多个 tester --- ### ✅ 二、为什么是 Batch Run?根本原因如下: #### 🔹 1. **任务本质是批量处理(Bulk Operation)** - Sorter 不是对单片晶圆做精细加工,而是执行“整体重排”任务。 - 例如:将 25 个 FOUP 中的晶圆统一读取状态 → 按 productname + priority 排序 → 分配到 10 个目标 FOUP。 - 这类任务天然适合一次性读取所有数据后统一规划路径和顺序 → 即 batch 处理。 > 类比:快递分拣中心不会收到一件发一件,而是等一车货到了再统一扫描分拨。 --- #### 🔹 2. **通信与控制延迟高,需减少频繁启停** - Sorter 需要与 MES、EAP、RFID、传感器等多个系统交互: - 查询每片 wafer 的 lotid、product、route status - 写入新的物理位置 plocation - 更新 carrier mapping(哪片在哪个 slot) - 如果每拿一片就请求一次数据库,会造成严重瓶颈。 - 所以通常会: > 先扫描整个 FOUP → 缓存信息 → 在本地完成排序算法 → 批量执行动作 → 最后一次性更新数据库 → 自然形成 **Batch Run 模式** --- #### 🔹 3. **机械运动效率优化需求** - Sorter 的手臂移动有加减速过程,频繁启停浪费时间。 - 若连续处理一组晶圆(比如一次搬 5 片),可使用 **shuttle transfer** 或 **multi-slot picking** 技术提升 throughput。 - Batch run 能更好地规划最优路径(如最短距离拾取),避免来回空跑。 ✅ 示例: ```text 输入:FOUP A (25片), FOUP B (25片) 目标:合并并按 priority 排序 → 输出到 OUT_FOUP_1 ~ OUT_FOUP_3 → Sorter 扫描全部50片 → 内部排序 → 规划搬运序列 → 一次运行完成所有转移 ``` --- #### 🔹 4. **依赖上游/下游系统的节奏(Synchronization)** - Sorter 往往等待某个触发条件才开始工作,例如: - 收集满 N 个 incoming FOUP - 收到 MES 下发的 dispatch plan - 上游设备(如 metrology)完成一批检测 - 因此它的启动不是实时的,而是周期性或事件驱动的 batch 模式。 --- #### 🔹 5. **软件架构限制** - 多数 Sorter 控制软件基于 SECS/GEM 或 EAP(Equipment Automation Program)开发。 - 它们通常采用“监听命令 → 执行脚本 → 完成上报”模式。 - 常见指令如: ```sec S6, F11: Start Sorting Batch S5, F10: Batch Complete Report ``` - 整个流程围绕“批”展开,而不是单片事件流。 --- ### ✅ 三、Batch Run vs Inline Real-time 对比 | 特性 | Sorter (Batch Run) | Inline Robot (Real-time) | |------|--------------------|---------------------------| | 处理单位 | 多片(Batch) | 单片(Single Wafer) | | 启动方式 | 事件/定时触发 | 实时响应 process end | | 数据交互频率 | 低频(开始+结束) | 高频(每步确认) | | 吞吐率 | 高(批量优化) | 中等 | | 灵活性 | 较低(需预设规则) | 高(动态调整) | | 应用场景 | 分类、换线、调拨 | 主线传送、主机上下料 | --- ### ✅ 四、实际应用中的 Batch Run 流程示例 ```text Step 1: 输入端口加载 3 个 FOUP(Priority: High/Medium/Low) Step 2: Sorter 扫描所有晶圆 ID,获取 product & ADSTATUS Step 3: 根据 OI 规则生成排序表(e.g., High → Tester A, Low → Wait Queue) Step 4: 启动 Batch Run,依次搬运晶圆至目标 FOUP Step 5: 批次完成后发送 completion message 给 MES ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值