无忧启动论坛

标题: 如何在DOS下调用本地程序循环运行 [打印本页]

作者: lingyang    时间: 2016-3-29 09:53
标题: 如何在DOS下调用本地程序循环运行
描述:本地C盘(可放在其他盘)有一个程序(MWC)需要调用本地文件处理大量数据,每次程序只能调用一个文件,共计2500多个(在input文件夹,与主程序同目录),运行完的结果放在output文件夹(与主程序同目录,文件夹名与input文件夹名一一对应)。
求助:如何在DOS下调用本地程序循环运行,只至结束。
下面是dos中的调用代码:
Microsoft Windows [版本 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.

C:\Users\ly>cd \

C:\>cd mwc

C:\MWC>mwc -iinput/50136 -ooutput/50136 -s

其中的红色部分为参数,每次都固定的;**部分为文件夹,其中input是每次去取数据,output为运行完后存放数据,也是固定的;蓝色部分(50136)是变量,每次执行共有2500多个,而且input中的这个变量名和output中的变量名要一一对应

谢谢吧友!


作者: mengcatcat    时间: 2016-3-29 10:15
for 语句可以满足你,自行百度
作者: lingyang    时间: 2016-3-29 11:57
没搞定
作者: lingyang    时间: 2016-3-29 17:04
FOR /F  %x IN(50136 50137) do C:/MWC/MWC -iaa/%x -m -oaa_out/%x   
我将input和output文件夹分别换成了aa与aa_out,在aa中建了50136和50137两个文件夹
执行时报错“此时不应有 IN(50136”
请帮忙给看看,谢谢!

作者: mengcatcat    时间: 2016-3-30 09:05
本帖最后由 mengcatcat 于 2016-3-30 09:08 编辑

FOR /d  %x IN(5013?) do ..\MWC "-iaa/%x -m -oaa_out/%x"   
作者: yfwang0798    时间: 2016-3-30 17:30
本帖最后由 yfwang0798 于 2016-3-31 09:21 编辑

看了半天,不知是否理解有误,
有input 和 output文件夹名,文件夹数量有多个,名字随机,每个文件夹里面又有多个文件需要处理,
解决方法是使用for语句,双层嵌套,
外层获取文件夹名字,内层获取文件名字,并执行命令处理。不知是否是这个意思?
作者: lingyang    时间: 2016-3-31 10:05
yfwang0798 发表于 2016-3-30 17:30
看了半天,不知是否理解有误,
有input 和 output文件夹名,文件夹数量有多个,名字随机,每个文件夹里面 ...

是的,没错。所有的文件都在input下面的文件夹中。
想循环调用本地的程序WMC执行程序,将计算结果再放到output下与input对应的文件夹中。
作者: yfwang0798    时间: 2016-3-31 19:59
还是有问题,你说的命令
mwc -iinput/50136 -ooutput/50136 -s

其中,50136是文件夹还是文件名? 由于50136没有扩展名,我理解为是文件夹名字,
,但如果是文件夹名字,为何又使用参数  /,而不是用参数  \。
你又说input文件夹下有子文件夹,如果是这样,命令中又没有要处理文件的名字,所以不知如何下手?

作者: lingyang    时间: 2016-4-1 08:34
yfwang0798 发表于 2016-3-31 19:59
还是有问题,你说的命令
mwc -iinput/50136 -ooutput/50136 -s

input是大文件夹,在这个文件夹下又有2522个子文件夹(如50136,此处的50136是文件夹名),所有要计算的数据全部放在这些文件夹中。
此处的mwc是本地的程序,它会去到50136中去调用要计算的数据(txt文件)
作者: yfwang0798    时间: 2016-4-1 10:04
命令中没有涉及文件名,for语句单循环就可以,见附件,但没有可执行文件,无法测试效果。

batch_for语句循环.zip

455 Bytes, 下载次数: 10, 下载积分: 无忧币 -2


作者: yjd    时间: 2016-4-1 10:26
本帖最后由 yjd 于 2016-4-1 10:27 编辑

你说的是命令行。不是dos下。
这个要是用程序写,到时很简单。就列下目录循环下就可以了。

  1. rem @echo off
  2. set pt=%~dp0
  3. cd /d %pt%input
  4. for %%i in (*) do c:\1\test.exe %pt%input\%%i %pt%output\%%i
  5. pause
复制代码

上面的参数自己修改下。
for命令介绍:
http://www.cnblogs.com/adforce/p/3282591.html
作者: lingyang    时间: 2016-4-1 10:37
yfwang0798 发表于 2016-4-1 10:04
命令中没有涉及文件名,for语句单循环就可以,见附件,但没有可执行文件,无法测试效果。

非常感谢!
作者: lingyang    时间: 2016-4-1 10:47
yfwang0798 发表于 2016-4-1 10:04
命令中没有涉及文件名,for语句单循环就可以,见附件,但没有可执行文件,无法测试效果。

程序能顺利运行  再次感谢!  
作者: lingyang    时间: 2016-4-1 14:31
yjd 发表于 2016-4-1 10:26
你说的是命令行。不是dos下。
这个要是用程序写,到时很简单。就列下目录循环下就可以了。

谢谢!
作者: 丰阿苏    时间: 2016-4-7 10:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: mougua783    时间: 2016-4-21 20:34
这个可以回,这个真得回!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3