2015-05-20 73 views
0

我已经看到有关这类问题的多篇文章,但我找不到适合我的例子的答案。如何在批处理中运行多个cmd文件?

我需要

什么在我的剧本,我需要启动所有.CMD-文件,这些文件在spesific文件夹(不是在我的脚本所在)。它是53.cmd文件,在该文件夹中执行不同类型的作业。

问题

我希望有一个简短的命令,使得它可以打开在一个或几行中的所有文件insted的有这些行53 start "c:\allcmdfiles\example-xxx-xx shortcut.cmd"

我试图

因此,在StackOverFlow上的其他帖子中,我碰到了call命令。我已经尝试了各种这些命令,但不能使它工作

for %%f in ("c:\allcmdfiles*.cmd") do CALL %%f

也许一些实用的信息

它在Windows Server 2008 R2的性病会运行,但是我正在测试W7

这些文件将与名称和破折号中的空格变化

我的问题

因此,没有人知道我可以钉呢?谢谢!

+0

你有没有试着用单'%的环'('%F' )和.bat扩展名? – i486

+0

@ i486是的,我试过了,但没有任何区别。谢谢你的建议! – MadsTheMan

+0

我希望上面的循环也在.bat文件中?另外,目标目录中的“cd”。 – i486

回答

2
for /f "tokens=*" %%i in ('dir /b c:\allcmdfiles\*.cmd') do call c:\allcmdfiles\%%i 

你错过了dir命令列出与wildcars文件,我们使用/b(简单),因为我们只需要在文件

+0

这使得感觉和似乎是可以工作的东西。当我将它添加到脚本并运行它时,我必须管理它,它只打开一个.cmd文件,然后退出。我尝试打开命令promt并从那里运行命令,但它给了我这个错误“%%我没有预料到现在(直接从挪威错误翻译)。任何想法?你肯定是在这里的东西。谢谢你的回复! – MadsTheMan

+0

如果你直接从提示中运行它,请删除双'%'。如果你想让控制台保持开启状态,你必须稍微调整一下。也许像这样'for/f“tokens = *”%% i in('dir /bc:\allcmdfiles\*.cmd')do start“” “cmd/K c:\ allcmdfiles \ %% i”' –

+0

删除列出文件的新进程效率低下且不必要。应该和传统的'for'命令完美配合(并且对我来说)。 –

1

的名称,这个批处理文件中为我的作品:

for %%f in ("c:\test\test*.cmd") do call "%%f" 

或在命令行上的等效:

for %f in ("c:\test\test*.cmd") do call "%f" 

我注意到,当使用Kayasax的变体时,你说第一个子脚本运行,然后父节点退出。这表明子脚本正在使用exit命令。最好的解决方法是修复孩子的脚本,但如果你不能这样做,你就必须在子shell中运行它:

for %%f in ("c:\test\test*.cmd") do cmd /c "%%f" 
+0

感谢伟大的投入,哈利,我会测试和看看这个这个:对于/ f“tokens = *”%%我在('dir /bc:\allcmdfiles\*.cmd')中开始“ “”cmd/K c:\ allcmdfiles \ %% i“ – MadsTheMan

+0

cmd/c'将在脚本执行后关闭控制台你必须使用'/ k'来保持它打开 –

+0

@Kayasax:在这种情况下,'cmd/k'完全是错误的;它会在每个子脚本之后停止并等待用户命令,并且直到用户发出“退出”命令才会运行下一个命令。我没有在这里启动新的控制台窗口,每个脚本都在父控制台窗口中运行。 (这通常是*首选行为;我怀疑OP每次运行脚本时真的想要留下十几个额外的控制台窗口!) –