当前位置:主页>销售管理软件> 列表

大虾请教shellexecute执行BAT文件问题急! 找在线进销存

销售管理软件版1楼: 我的backup.bat放在“Y:\3541-CBHS\DATA\BACKUP.BAT
在WIN2003直接点击BACKUP.BAT可以将指定的文件进行复制
但是在DELPHI程序中执行就是不能将指定的文件进行复制代码如下:
我也USE SHELLAP1

shellexecute(handle,nil,pchar(''DATA\backup.bat''),nil,nil,sw_showminimized);

2楼: 用winexec(''DATA\backup.bat'',sw_show); 如仓库进销存管理系统

3楼: 续楼上
ShellExecute的用法如下:
ShellExecute(Handle,''Open'',''c:\1.bat'','''','''',SW_SHOWNORMAL);
如果你的bat文件不是放在当前目录或系统目录,要用绝对路径

4楼: ShellExecute(handle,''open'',''Command.com'',''Command.com /c c:\DATA\backup.bat'','''',sw_normal);

5楼: 同意楼上

6楼: 把command.com 换成cmd.exe

销售管理软件版7楼: 不行呀!各位大虾
说明以下我的操作系统是WIN2003
ShellExecute(handle,''open'',''cmd.exe'',''cmd.exe /c D:\3541cb-2006-3-11\DATA\backup.bat'','''',sw_normal);

8楼: 你的路径D:\3541cb-2006-3-11 中有 ''-'',可能是这个原因.你在两头加""试一下.

9楼: 试试



uses ShellAPI;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(handle,''open'',''D:\3541cb-2006-3-11\DATA\backup.bat'',nil,nil,sw_normal);
end;

10楼: 各位大虾还是不行呀!

11楼: 有兴趣的话,请联系我的MSN,当面了解吧.点我名字就可看到我的联系方式

12楼: 没有人能解答这个问题吗? 如进销存管理系统论文

13楼: 把你backup.bat的内容贴出来,我怀疑你文件有问题.

销售管理软件版14楼: echo off
del 2006cbxt_backup.mdb
copy 2006cbxt.mdb 2006cbxt_backup.mdb
echo on

15楼: ShellExecute(handle,''open'',''cmd.exe'',''cmd.exe /c D:\3541cb~1\DATA\backup.bat'','''',sw_normal);

16楼: shangshang:
你好!
昨天我给你发过邮件但是都退回来了,不知是什么原因?
以上BACKUP.BAT在WIN2003下直接点击BACKUP.BAT可以将指定的文件进行复制

17楼: ok, 邮件被退我也不清除怎么回事,我一直用 ypv8@163.com msn的邮件我都没用过.


你的问题我想是路径不正确.
要么你在bat中写绝对路径,
要么在程序中
试试

uses ShellAPI;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(handle,''open'',''D:\3541cb-2006-3-11\DATA\backup.bat'',nil,''你的mdb文件所在路径'',sw_normal);
end;

18楼: shangshang:
你好!
用过DBGridEh1控件吗?知道怎样让DBGridEh1的列宽随记录的长度自动调整列宽

19楼: 怎么又变成这问题,挣你的100分还真不容易,你的bat问题怎样了啊.
ehlib的自动适应列宽问题,我有一个函数,自己写的.

用在dataset 的afteropen事件里

const
VisualFieldTypeSet = [ftString, ftSmallint, ftInteger, ftWord,
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
ftBytes, ftVarBytes, ftAutoInc, ftMemo, ftFmtMemo, ftFixedChar,
ftWideString, ftLargeint, ftArray, ftGuid, ftTimeStamp, ftFMTBcd];

AllowSUMFieldTypeSet = [ftSmallint, ftInteger, ftWord, ftFloat,
ftCurrency, ftBCD, ftBytes, ftVarBytes, { ftAutoInc, } ftLargeint, ftFMTBcd];



procedure AutoAdjustDBGridEhWidth(ADBGridEh: TDBGridEH);
var
i, j, tmpRecCount, tmpColWidth: integer;
c: Timage;
WArray: array of integer;
ADataSet: TDataSet;

procedure FillDBGridEhFooterAndAdjustColWidth;
var
i: integer;
begin
if ADBGridEh.FooterRowCount = 1 then
begin
c := Timage.Create(application);
try //比较一下footer 的最宽值
for i := Low(WArray) to High(WArray) do
if not (ADBGRidEh.Columns[i].Field.DataType in AllowSUMFieldTypeSet) then
begin
if i = 0 then
begin
ADBGridEh.Columns[i].Footer.ValueType := fvtStaticText;
ADBGridEh.Columns[i].Footer.Value := ''合计'';
ADBGridEh.Columns[i].Footer.Alignment := taCenter;
c.Canvas.Font.Assign(ADBGridEh.Columns[i].Footer.Font);
tmpColWidth := c.Canvas.TextWidth(ADBGridEh.Columns[i].Footer.Value);
if tmpColWidth > Warray[i] then Warray[i] := tmpColWidth;

end;
end
else begin
ADBGridEh.Columns[i].Footer.ValueType := fvtSUM;
c.Canvas.Font.Assign(ADBGridEh.Columns[i].Footer.Font);
tmpColWidth := c.Canvas.TextWidth(ADBGridEh.GetFooterValue(0, ADBGridEh.Columns[i]));
if tmpColWidth > Warray[i] then Warray[i] := tmpColWidth;
end;
finally
c.Free;
end;
end;

for i := Low(WArray) to High(WArray) do
begin
if Warray[i] <> 0 then
ADBGridEh.Columns[i].Width := Warray[i] + 5;
end;
end;

begin
ADataSet := ADBGridEh.DataSource.DataSet;
try //自动确定每列的宽度效果不好 ps: writer by YuanPeng
ADataSet.DisableControls;
ADBGridEh.Columns.BeginUpdate;
SetLength(WArray, ADBGridEh.Columns.Count);

c := Timage.Create(application);
try
for i := Low(WArray) to High(WArray) do
begin
c.Canvas.Font.Assign(ADBGridEh.Columns[i].Title.Font);

Warray[i] := c.Canvas.TextWidth(ADBGridEh.Columns[i].Title.Caption);
end;
finally
c.Free;
end;

tmpRecCount := 40;
if tmpRecCount > ADataSet.RecordCount then tmpRecCount := ADataSet.RecordCount; //最多只测前40条记录的列宽
ADataSet.First;
for j := 0 to tmpRecCount - 1 do
begin
for i := Low(WArray) to High(WArray) do
begin
if ADBGridEh.Columns[i].Field.DataType in VisualFieldTypeSet then
begin
try
tmpColWidth := ADBGridEh.Canvas.TextWidth(Trim(ADBGridEh.Columns[i].Field.AsString));
if Warray[i] < tmpColWidth then Warray[i] := tmpColWidth;
except
end;
end;
end;
ADataSet.Next;
end;
FillDBGridEhFooterAndAdjustColWidth;
finally
ADataSet.First;
ADBGridEh.Columns.EndUpdate;
ADataSet.EnableControls;
end;
end;

20楼: shangshang:
你好!
BAT文件按你说可以正确执行了


ehlib的自动适应列宽问题你给的代码我都加入到,“dataset 的afteropen事件里.”但是不行(我数据记录才10条)

销售管理软件版21楼: 不管你记录多少条,我的这个函数我都用了好几年了,从来没改过,不会有问题的.你也不说清楚到底是怎样出错的,错误信息是什么.
另外,可否先把这个帖子的分数给了.我这样来回看帖子好麻烦的,你没有msn吗? 不能直接跟我联系吗?

22楼: 来自毕生的财富-管道的故事!

很久很久以前,在意大利的一个小村子里,有叫布鲁诺和柏波罗的两个年轻人,他们是堂兄弟,而且都雄心勃勃。

一天,

机会来了。村里决定雇两个人把附近河里的水运到村广场的水缸里去。这份工作交给了柏波罗和布鲁诺。两个人都抓起两个水桶奔向河边。一天结束后,他们把村上的水缸装满了。村里的长辈按每桶水一分钱的价钱付钱给他们。

第二天,柏波罗说:“一天才几毛钱的报酬,却要这样来回提水,干脆我们修一条管道把水引到村里去吧。”布鲁诺大声嚷嚷道:“柏波罗,我们有一份很不错的工作。我一天可以提一百桶水。一分钱一桶水的话,一天就是一元钱!一个星期后,我就可以买双新鞋;一个月以后,我就可以买一头母牛;六个月后,我就可以盖一间新房子。我们有全村最好的工作。放弃你的管道吧!”

但柏波罗相信他的梦想终会实现。于是他就去做了。他将一部分白天的时间用来提水,另一部分时间以及周末用来建造管道。

布鲁诺和其他村民开始嘲笑柏波罗,布鲁诺赚到的钱比柏波罗多一倍,他不断地向柏波罗炫耀自己新买的东西。

柏波罗不管这些,继续挖他的管道,哪怕每次只是一英寸。

最后,柏波罗的好日子终于来到了——管道完工了!现在村子里源源不断地有新鲜水供应了。柏波罗也不用再提水桶了。而柏波罗口袋的钱也就越来越多。

管道使得提桶人布鲁诺失去了工作。于是柏波罗找到布鲁诺说:“布鲁诺,我想教你建造管道……然后你再教其他人……然后他们再教其他人……直到管道铺满本地区的每个村落…….最后,全世界的每有一个村子都有管道。”

柏波罗继续说,“我们只需从流进这些管道的水中赚取一个很小的比例。越多的水流进管道,就有越多的钱流入我们的口袋。我所建的管道不是梦想的结束,而只是开始。”

布鲁诺终于明白了这幅宏伟的蓝图。他笑了,他向他的老朋友伸出他那粗糙的手。

或许你有一份好的工作,或许你对目前的工作不是很满意,现在网络赚钱已成为现实,迅速的建立自己的团队,建立自己的赚钱管道,为明天的成功打下基础,有兴趣的朋友进入我的网站详细了解

【Soho之家公司网址】[URL=http://3711.9soho.com]http://3711.9soho.com/[/URL]

【咨询QQ】277341915(耐心讲解等待您的咨询)
[img]http://9soho.com/pic/banner/001.gif[/img]
(摘自《管道的故事》贝克.哈吉斯/文) 如在线进销存

23楼: 谢谢!

24楼: shangshang:我把写的代码发给你了帮忙看看 谢谢

25楼: 我已经回了, 居然发到大富翁邮箱了, 郁闷. 又给你重发了一遍.
你都没看我的函数,根本就没有调用嘛.