如何使用接受文本文件中的参数的循环创建批处理文件?

时间:2012-12-18 16:31:06

标签: loops batch-file text-files

我有一系列需要根据propertyID生成的水晶报告。这些报告需要2个参数(PropertyIDdate)。我使用水晶报告导出器将这些转换为pdf以通过电子邮件发送出去。

我需要创建一个批处理文件,为每个特定属性运行此转换。我创建了一个包含propertyIDs列的isql的txt文件。我需要创建一个循环来读取列列表的第一行,然后遍历其余的ID。

这是我第一次使用批处理文件,所以我很感激我能得到任何帮助:)谢谢!

更新: 一直在努力这个。而现在我认为我的参数存在问题。现在,我将开始使用一个参数-PropertyID-直到我能掌握这一点。这是我现在的代码.. 这是我的批处理文件,它将报告转换为pdf:

c:
cd c:\y46\crexport #navigating to proper folder
crexport.exe -U username -P password -S server -D dbname -F "C:\y46\crexport\rs_Ardent_Owner_Stmtsputesting.rpt" -O "C:\y46\crexport\output.pdf" -E pdf -a "curr_month:11/01/2012 00:00:00" -a "pscode:%A"

正如您所看到的,我的两个参数在这里被定义,但是pscode(PropertyID)被设置为A(很可能是因为我无法理解参数如何工作)。但这是我用来调用批处理文件的代码:

FOR %A IN ("C:\y46\crexport\output.txt") DO "C:\y46\crexport\batch.bat" %A

这有效,但它没有向批处理文件发送正确的参数值,所以我不生成任何输出报告。一旦我解决了我的参数问题,也不确定这是否会在每条记录中正确循环。

这是另一个文本文件源示例。只需一列,如下所示。每行都是propertyID。有些是3位数,有些是8位。

010     
057     
152     
197     
21210721  
21210722    
22090461  
22090462  
22090781  
22090782  
22093561  
22093562  
23180051  
23180052  
23220781  
23220782  
257     
324     
350     
352     
354     
355     
367     
400     
401     
402        

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,只需要做一些改变

cd C:\y46\crexport
for /f %%a in (file.txt) do (
crexport.exe -U username -P password -S server -D dbname -F "C:\y46\crexport\rs_Ardent_Owner_Stmtsputesting.rpt" -O "C:\y46\crexport\output.pdf" -E pdf -a "curr_month:11/01/2012 00:00:00" -a "pscode:%%a"
)

我已将%A更改为%%a以匹配for循环(假设这是循环当前正在处理的文件的名称。

简而言之,这个批处理文件将处理目录C:\y46\crexport中的所有文件,并且每个文件都运行您在问题中指定的crexport命令。

如果这些不是crexport的正确参数,请告诉我详情,我会调整它。