这个想法是在一个文件夹中有两个文件
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进行简化)
答案 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"变量引用并据此采取行动。