如何在子目录中使用for循环运行应用程序

时间:2019-07-22 19:44:15

标签: windows batch-file for-loop

我有3000多个子目录,每个子目录都包含一个名为contact2.dbf的dbf文件。

我正在使用一个名为dbview.exe的应用程序,以根据过滤条件运行数据库的导出。我目前所做的是使用excel和Windows中的“复制路径”功能创建一个frankenscript来构建脚本并将输出导出到directoryname.dbf。

现在我想起来了,Kinda太草率了,我可以将它们全部输出到相同的.dbf文件中,但是很好。我正在完善我的流程。

因此,我想做的是使用loop /R命令指定子目录,因为每天都会添加新的子目录,而我不想继续修改这个庞大的脚本。以下脚本中的目录为T:\TM5\Data\NixT:\TM5\Data\Covenant等。

也可以将脚本编辑为所有输出到相同的/ EXPORT位置。

"C:\Program Files (x86)\DBF Viewer 2000\dbview.exe" T:\TM5\Data\Nix\contact2.dbf /EXPORT:C:\AUTOMATION\LEADS\Nix.dbf /FILTER:C:\AUTOMATION\LEADS\LEADS.flt  /COLUMNS:COM,EMAILADRES,EXTENSION,TL1,CON,TITLE,ADDRESS,ADDRESS2,CITY,STATE,ZIPCODE,MEM,TERMCODE,LCL,EMPLYU9,STATUS,FIRSTNAMU2,LASTNAMU4,SIC,DUNS,DUNSU6,LISTSRC
"C:\Program Files (x86)\DBF Viewer 2000\dbview.exe" T:\TM5\Data\Covenant\contact2.dbf /EXPORT:C:\AUTOMATION\LEADS\Covenant.dbf /FILTER:C:\AUTOMATION\LEADS\LEADS.flt  /COLUMNS:COM,EMAILADRES,EXTENSION,TL1,CON,TITLE,ADDRESS,ADDRESS2,CITY,STATE,ZIPCODE,MEM,TERMCODE,LCL,EMPLYU9,STATUS,FIRSTNAMU2,LASTNAMU4,SIC,DUNS,DUNSU6,LISTSRC
"C:\Program Files (x86)\DBF Viewer 2000\dbview.exe" T:\TM5\Data\Fenyx\contact2.dbf /EXPORT:C:\AUTOMATION\LEADS\Fenyx.dbf /FILTER:C:\AUTOMATION\LEADS\LEADS.flt  /COLUMNS:COM,EMAILADRES,EXTENSION,TL1,CON,TITLE,ADDRESS,ADDRESS2,CITY,STATE,ZIPCODE,MEM,TERMCODE,LCL,EMPLYU9,STATUS,FIRSTNAMU2,LASTNAMU4,SIC,DUNS,DUNSU6,LISTSRC
"C:\Program Files (x86)\DBF Viewer 2000\dbview.exe" T:\TM5\Data\FarmSC\contact2.dbf /EXPORT:C:\AUTOMATION\LEADS\FarmSC.dbf /FILTER:C:\AUTOMATION\LEADS\LEADS.flt  /COLUMNS:COM,EMAILADRES,EXTENSION,TL1,CON,TITLE,ADDRESS,ADDRESS2,CITY,STATE,ZIPCODE,MEM,TERMCODE,LCL,EMPLYU9,STATUS,FIRSTNAMU2,LASTNAMU4,SIC,DUNS,DUNSU6,LISTSRC
"C:\Program Files (x86)\DBF Viewer 2000\dbview.exe" T:\TM5\Data\CMTCsola\contact2.dbf /EXPORT:C:\AUTOMATION\LEADS\CMTCsola.dbf /FILTER:C:\AUTOMATION\LEADS\LEADS.flt  /COLUMNS:COM,EMAILADRES,EXTENSION,TL1,CON,TITLE,ADDRESS,ADDRESS2,CITY,STATE,ZIPCODE,MEM,TERMCODE,LCL,EMPLYU9,STATUS,FIRSTNAMU2,LASTNAMU4,SIC,DUNS,DUNSU6,LISTSRC
"C:\Program Files (x86)\DBF Viewer 2000\dbview.exe" T:\TM5\Data\OneDigMV\contact2.dbf /EXPORT:C:\AUTOMATION\LEADS\OneDigMV.dbf /FILTER:C:\AUTOMATION\LEADS\LEADS.flt  /COLUMNS:COM,EMAILADRES,EXTENSION,TL1,CON,TITLE,ADDRESS,ADDRESS2,CITY,STATE,ZIPCODE,MEM,TERMCODE,LCL,EMPLYU9,STATUS,FIRSTNAMU2,LASTNAMU4,SIC,DUNS,DUNSU6,LISTSRC

2 个答案:

答案 0 :(得分:0)

我相信您正在寻找的是

for /d %%w in ("T:\TM5\Data\*") do "C:\Program Files (x86)\DBF Viewer 2000\dbview.exe" "%%w\contact2.dbf" /EXPORT:C:\AUTOMATION\LEADS\Nix.dbf /FILTER:C:\AUTOMATION\LEADS\LEADS.flt  /COLUMNS:COM,EMAILADRES,EXTENSION,TL1,CON,TITLE,ADDRESS,ADDRESS2,CITY,STATE,ZIPCODE,MEM,TERMCODE,LCL,EMPLYU9,STATUS,FIRSTNAMU2,LASTNAMU4,SIC,DUNS,DUNSU6,LISTSRC

其中%%w应该获取T:\TM5\Data的每个子目录的全名,但只能获取该目录的全名,即。低于一级,非递归。

答案 1 :(得分:0)

正确答案归Compo所有。我试图做的是使用名为dbview的应用程序动态地从数千个.dbf文件中提取数据,每个文件位于不同的目录中。

https://www.dbf2002.com/

我使用Compo的脚本提取数据:

  

@对于/ D %% A In(“ T:\ TM5 \ Data *”)执行@“%ProgramFiles(x86)%\ DBF Viewer   2000 \ dbview.exe“” %% A \ contact2.dbf“   /导出:“ C:\ AUTOMATION \ LEADS \ %%〜nxA.dbf”   /FILTER:C:\AUTOMATION\LEADS\LEADS.flt   /栏:COM,电子邮件地址,扩展,TL1,CON,标题,地址,地址2,城市,州,邮政编码,MEM,TERMCODE,LCL,EMPLYU9,STATUS,FIRSTNAMU2,LASTNAMU4,SIC,DUNS,DUNSU6,LISTSRC   2> NUL

然后将其全部放入另一个数据库:

  

对于(“ C:\ AUTOMATION \ LEADS \ LITTLE * .DBF”)中的%% I,请执行“ C:\ Program Files   (x86)\ DBF查看器   2000 \ dbview.exe“ /APPEND:Q:\TM5\Data\dleads\CONTACT2.DBF,%% I

路径可能有所不同,因为我在不同的目录中尝试了不同的事情,但是语法应该可以工作,并且如果有人遇到类似的情况,可以对其进行调整以适应这种情况。