Cmd 在多个Windows Server子目录中运行特定程序

Cmd 在多个Windows Server子目录中运行特定程序,cmd,windows-server-2008-r2,Cmd,Windows Server 2008 R2,我们有一种情况,需要在多个子目录中运行同一个命令行程序。我们的命令行程序旨在启动/停止服务器上的特定进程。 目前,我需要手动访问这些文件夹并在那里运行程序,但这非常不方便和耗时。为了节省一些时间,我创建了primitive cmd,这将为我做到这一点,但有一个潜在的可能性,即会有更多类似的情况,超过六个子文件夹。 我们的程序有不同类型的命令行参数,例如:start、stop、log等等 echo "Stopping program..." echo "Stoppi

我们有一种情况,需要在多个子目录中运行同一个命令行程序。我们的命令行程序旨在启动/停止服务器上的特定进程。 目前,我需要手动访问这些文件夹并在那里运行程序,但这非常不方便和耗时。为了节省一些时间,我创建了primitive cmd,这将为我做到这一点,但有一个潜在的可能性,即会有更多类似的情况,超过六个子文件夹。 我们的程序有不同类型的命令行参数,例如:start、stop、log等等

echo "Stopping program..."

echo "Stopping p1..."
cd folder1
g stop
echo "done"

cd ..

echo "Stopping p2..."
cd folder2
g stop
echo "done"

cd ..

echo "Stopping p3..."
cd folder3
g stop
echo "done"

cd ..

echo "Stopping p4..."
cd folder4
g stop
echo "done"

cd ..

echo "Stopping p5..."
cd folder5
g stop
echo "done"

cd..

echo "Stopping p6..."
cd folder6 
g stop
echo "done"

cd ..

echo "Stopping p7..."
cd folder7
g stop
echo "done"

cd ..
这是我想到的,但它非常丑陋,也不是很聪明。我想要的解决方案是这样的

D:\rootForMyFolders>helper start *
D:\rootForMyFolders>helper stop *
或者只指定将在其中执行该程序的文件夹的名称,例如:

D:\rootForMyFolders>helper start folder1 folder2 folder3

我在调查。您知道如何安全可靠地执行此操作吗?任何帮助都将不胜感激。谢谢。

通常情况下,最好不要将程序放在运行的完整位置,而不要转到路径

因此,在第一个示例中,它看起来像:

@SETLOCAL 回音 电话:Main 端部 退出/B :Main 回音停止程序。。。 回音停止p1。。。 D:\rootForMyFolders\folder1\g停止 回音完成 回音停止p2。。。 D:\rootForMyFolders\folder2\g停止 回音完成 REM p3、p4……等。 后藤:EOF 然后,让我们来处理一些冗余的重复数据消除,但您的手动列表仍然简单得多:

@SETLOCAL 回音 设置_RootFolder=D:\rootForMyFolders SET _SubFolders=Folder1 Folder2 Folder3 Folder4 Folder5 Folder6 Folder7 设置_CMD=g 设置动作=停止 电话:Main 端部 退出/B :Main 回显。%\u操作%程序。。。 REM循环文件夹在每个文件夹中运行stop命令: 对于%%\u子文件夹中的%%\u%DO ECHO.Running%\u\%\ u CMD=%\u Action%。。。 %_根文件夹%\%%\\%\u CMD=%%\u操作% 回音,完毕 回声。脚本完成了! 现在,我们已经将其转换为重构形式,可以轻松编辑变量并循环使用它们,这已经节省了大量时间,因为我们迭代地开发一个程序,您可以在CLI上指定所需的变量

为下一步保留
我想/D在这里比/R文件夹更有用,而不是递归文件夹。没有文档记录,但您可以在需要时组合/D/R递归文件夹这正是我想要的。非常感谢你。有了这个解决方案,我可以轻松地扩展脚本将处理多少个文件夹。