自动化,加载.prg文件,使用预定义的变量运行它

时间:2016-10-25 13:54:28

标签: batch-file variables cmd visual-foxpro

这个想法是在一个文件夹中有两个文件

test.csv
test.prg

我想用.bat文件(或.vbs)运行带有变量" 2510"的文件test.prg。

它将自动加载到Visual Fox Pro中(这里我不知道如何自动运行脚本而不用动态点击感叹号)和visual fox pro应该使用.bat / .vbs文件中的变量为2510。

1) Open test.prg
2) Load VFP
3) Use pre defined variable from .bat/.vbs
4) Run script (automatically)
5) close VFP

因为这是日常工作,我尽可能地尝试简化(目前我只知道如何使用cmd / .bat和vbs进行简化)

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望运行带有更改参数的prg文件,并且您希望更改调用.bat或.vbs文件中的参数。如果它是您想要做的,那么您可以简单地使用bat文件内容,如:

cd "c:\My Folder"
"c:\Program Files (x86)\Microsoft Visual Foxpro 9\vfp9.exe" test.prg 2510

并且您的prg将使用该参数运行。请记住,从命令行传递的参数始终是字符数据类型。

然而,有一种更简单的方法。你这样做,你会编辑.BAT文件,保存它,然后双击执行。您可以在命令窗口中创建一个VFP可执行文件(假设test.prg位于c:\ My Folder'):

set default to ('c:\My Folder')
build project MyTest from 'test.prg'
build exe MyTest from 'MyTest.pjx'

你将在该文件夹中拥有MyTest.exe。您的BAT文件内容将是:

cd "c:\My Folder"
MyTest 2510

仍然很麻烦。您需要编辑.BAT文件,更改参数,保存并双击它。让它更简单:

在test.prg中,不要从命令行获取参数,而是询问参数值并执行该过程!这完全消除了对BAT文件的需求。然后,您只需在桌面上创建一个快捷方式。每当您双击该快捷方式时,它会询问该参数,然后使用该参数值进行处理并退出。这样一个test.prg的内容如下:

_screen.Visible = .T.
LOCAL cInput
cInput = INPUTBOX("What is parameter value?", "Get parameter value", "2510", 5000, '', 'Cancelled')

DO case
 CASE m.cInput == ''
   ? 'Input timed out'
 CASE m.cInput == 'Cancelled'
   ? 'Cancelled'
 CASE m.cInput == '0' Or VAL(m.cInput) != 0
   Process( VAL(m.cInput) )
 OTHERWISE
   ? 'Parameter is not numeric'  
ENDCASE

QUIT


PROCEDURE Process(tnparameter)
 ? 'Processing with parameter =', m.tnParameter
Endproc

此外,您可以通过具有预期类型的​​表单(即:表单上的datetimepicker获取日期)来获取值,而不是像命令行参数那样返回字符值的inputbox()。

答案 1 :(得分:1)

目前还不清楚你要做什么。但是,从VFP,我创建了一个可能对您有帮助的简单项目和程序。

启动VFP。在命令窗口中键入 创建项目MyTest [enter]

单击“代码”选项卡,然后单击“新建”。粘贴以下代码段

LPARAMETERS DOSParm1, DOSParm2, DOSParm3, DOSParm4

MESSAGEBOX( "Parm1: " + TRANSFORM( DOSParm1 ) + CHR(13)+CHR(10);
            + "Parm2: " + TRANSFORM( DOSParm2 ) + CHR(13)+CHR(10);
            + "Parm3: " + TRANSFORM( DOSParm3 ) + CHR(13)+CHR(10);
            + "Parm4: " + TRANSFORM( DOSParm4 ) + CHR(13)+CHR(10) )

RETURN 

将程序保存为MyTest.prg,然后单击项目的构建以创建可执行文件。现在您有一个简单的EXE文件,它接受来自dos命令或其他方法(vbs)的最多4个参数。您可以更改实际的VFP以根据您需要的任何变量进行操作,但我只是将它们作为消息框输出显示。如果未提供参数,则默认值为逻辑.F。 (假)

要从DOS提示符进行测试,您可以执行类似

的操作
MyTest oneParm anotherParm 3rd last

您将看到显示这4个参数字符串的消息框。

如果跳过参数,没问题。

MyTest Only TwoParms

同样,代码可以更改为使用" 2510"变量引用并据此采取行动。