【发布时间】:2018-04-02 16:54:14
【问题描述】:
我对 Batch 和 Perl 真的很陌生,所以如果我以错误的方式解决我的问题,请见谅。我现在的任务是一步一步来的:
- 执行将生成批处理文件的 Perl 脚本。
- 执行批处理文件时,将使用
adddiffs new (...)创建协作者审核,然后使用addfiles (...)添加文件
目前的问题是,有时评论创建过程会因任何原因而失败(我没有真正告诉过为什么,只是确实如此)但尽管adddiffs 命令失败,addfiles last(目前就是这样coded) 仍然会执行,最终会将文件添加到错误的审阅中。例如,我正在尝试创建评论 10,但评论创建失败并且文件最终被添加到评论 9,这显然不是我们想要的。
我正在尝试将adddiffs new 的输出转储到一个文本文件中,然后我使用一些 perl 脚本提取评论#。然后我想做的是使用提取的评论 # 来执行 addfiles reviewNum 而不是 addfiles last 因为看起来 addfiles last 可能会导致意外行为。
我的批处理文件是什么样的:
@rem= 'PERL for Windows NT
@echo off
ccollab.exe adddiffs new Original_Files Changed_Files > output.txt
C:\Perl\bin\perl GenerateReview.bat%*
goto endofperl
@rem ';
open(TXT, "output.txt") or die;
$lastLine = "";
while ($line = <TXT>) {
$lastLine = $line;
}
($revNum) = $lastLine =~ /(\d+)/ig;
close TXT;
__END__
:endofperl
ccollab.exe addfiles $revNum *.txt *.pdf *.html *.doc* *.xls* Info_Only/*
pause
有没有办法可以从 perl 脚本中获取 $revNum 并将其替换为我的 addfiles 命令?
【问题讨论】:
-
你能详细说明你需要什么吗?示例输入和输出是什么样的?
-
@Yserbius 从技术上讲,输入并不重要,因为脚本只是读取 Original_Files 和 Changed_Files 目录中的文件。至于输出,当
ccollab.exe adddiffs new Original_Files Changed_Files > output.txt被执行时,它应该生成output.txt文件,如果成功将是Changes successfully attached to Review 10。作为最后一行。然后 perl 脚本将运行并获取10。到目前为止,这部分似乎有效;我试图弄清楚如何获取评论编号并将其传递给下一个批处理命令ccollab.exe addfiles $revNum (...)
标签: perl batch-file code-collaborator