2013-08-07 212 views
-1

我需要从第一个批处理文件调用批处理文件的语法。第二个批处理文件名称随版本而变化。所以我只有我的第二批文件名的一半。如何从批处理文件调用批处理文件

如何在特定文件夹中搜索并调用第二批文件..?

+2

你可以在'bat_file_1'中使用'call bat_file_2.bat' – GoodSp33d

+0

@ 2-Stroker我可以使用它,如果我知道我的第二批文件的完整名称。但是在这里,批处理文件名称随修订而变化,所以我无法使用它。我想用bat_file * .bat搜索然后调用。我不知道该怎么做 –

+0

有没有办法回答这个问题。我们怎么知道当前版本是什么?该文件夹中可能有任何与“前半部分”匹配的批处理文件。我们如何知道要运行哪一个?具体的规则。什么是“上半场”?关于如何识别正确的“下半部分”有哪些规则? “半部”如何组合成一个完整的文件名? – dbenham

回答

1

不知道修改前缀或后缀,但你可以尝试这样的事:

for /f "tokens=1" %%n in ('dir /on /l /b /a-d "bat_file_*.bat"') do set latest_bat_file=%%n 

它依赖于DIR /上以按名称排序,所以它把最后一个条目按字母顺序变量%latest_bat_file%。然后您可以拨打它:

call "%latest_bat_file%" 

这假定bat文件名中没有空格,并且修订版是数字或字母后缀。如果您使用数字,为避免排序问题,请将您的修订名称前缀为零(例如bat_file_001,bat_file_002)。

+0

作为一种替代方法,假设新版本具有较新的时间戳(最终'/ t'也可以提供帮助),您可以不按名称排序('/ on'),而按日期排序('/ od')。见'dir /?' – Stephan

0

FOR /R <path>将为您走过目录树。

FOR /R "%DIR_TO_SEARCH%" %%b IN (matching_*.bat) DO cmd /c "%%~b" 

cmd /c将创建一个新的shell实例,这意味着如果被调用的.bat文件设置环境变量,他们不会在调用脚本改变。这通常是人们想要的。如果你真的想要保留这些副作用,你可以用call "%%~b"代替。