自动化,加载 .prg 文件,运行 它带有预定义的变量
Automatisation, Load .prg file, run it with pre-defined variable
想法是在一个文件夹中有两个文件
test.csv
test.prg
我想 运行 使用 .bat 文件(或 .vbs)文件 test.prg 变量“2510”。
它会在 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来简化)
确实不清楚您要做什么。但是,我从 VFP 创建了一个可能对您有所帮助的简单项目和程序。
启动VFP。在命令 window 中输入
创建项目 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”变量引用执行您需要的任何操作,并采取相应的行动。
如果我没理解错的话,您想要 运行 一个带有更改参数的 prg 文件,并且您想要更改调用 .bat 或 .vbs 文件中的参数。如果这是你想要做的,那么你可以简单地将 bat 文件内容设置为:
cd "c:\My Folder"
"c:\Program Files (x86)\Microsoft Visual Foxpro 9\vfp9.exe" test.prg 2510
并且您的 prg 将是 运行 和该参数。请记住,从命令行传递的参数始终是字符数据类型。
不过,还有更简单的方法。按照您的操作方式,您将编辑 .BAT 文件,保存它,然后双击执行。您可以在命令 window 中创建一个 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
另外,作为命令行参数 returns 字符值的 inputbox(),您可以通过具有预期类型的表单获取值(即:形式获取日期)。
想法是在一个文件夹中有两个文件
test.csv
test.prg
我想 运行 使用 .bat 文件(或 .vbs)文件 test.prg 变量“2510”。
它会在 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来简化)
确实不清楚您要做什么。但是,我从 VFP 创建了一个可能对您有所帮助的简单项目和程序。
启动VFP。在命令 window 中输入 创建项目 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”变量引用执行您需要的任何操作,并采取相应的行动。
如果我没理解错的话,您想要 运行 一个带有更改参数的 prg 文件,并且您想要更改调用 .bat 或 .vbs 文件中的参数。如果这是你想要做的,那么你可以简单地将 bat 文件内容设置为:
cd "c:\My Folder"
"c:\Program Files (x86)\Microsoft Visual Foxpro 9\vfp9.exe" test.prg 2510
并且您的 prg 将是 运行 和该参数。请记住,从命令行传递的参数始终是字符数据类型。
不过,还有更简单的方法。按照您的操作方式,您将编辑 .BAT 文件,保存它,然后双击执行。您可以在命令 window 中创建一个 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
另外,作为命令行参数 returns 字符值的 inputbox(),您可以通过具有预期类型的表单获取值(即:形式获取日期)。