【发布时间】:2013-05-10 15:52:26
【问题描述】:
此命令位于一个大型批处理文件的中间,该批处理文件在 Windows XP 下运行了 5 年以上,但在 Windows 7(32 位)下运行时,它报告“MyBatch.bat 未被识别为内部/外部命令、可运行的程序或批处理文件”。
如果我编辑主批处理文件以在行前添加“cd”或“dir”,它会显示 MyBatch.bat 所在的目录,但 cmd 找不到它。
我发现使调用起作用的唯一方法是在该行前面加上“set path=%path%;%cd%”,但这只是因为 MyBatch.bat 的位置现在在路径中.对于主批处理文件的其余部分,这是一个不切实际的解决方案。我不能使用 'call MyBatch.bat ...' 代替,因为在其他地方 cmd /C 用于调用 .exe 文件。
在我的系统上,注册表中的“cmd”设置为管理员模式,并启用了命令扩展(主批处理文件的某些处理需要管理员模式)。我也尝试过将cmd设置为WINXPSP3兼容模式,但没有任何区别。
就好像 Win7 版本的 cmd 只使用 %path% 来查找东西,而不是查看它正在运行的目录,而 WinXP 版本则这样做。我还没有在任何地方看到这种限制。
我是否误解了某些内容或错过了某个步骤或注册表标志? 有没有办法让 cmd 在 Win7 下像在 WinXP 下一样工作?
【问题讨论】:
-
您可能是对的,但您应该提供真实数据,而不是
"MyBatch.bat Param1 Param2 Param3"。 -
实际使用的文件夹是什么? Win 7 和 Win 8 中的管理员具有比 Win XP 中的管理员更少的访问权限。尝试右键单击批处理文件并“以管理员身份运行”。看看是否成功。
-
@Endoro - 感谢您的回复。我不认为添加真正的参数会有所帮助,因为它们只会对处理它们的批处理文件有意义,但完整的行是: cmd /C "MkPCBld.bat Release Nowait NoDemo"
-
@foxidrive - 打开 Admin cmd 提示符并导航到批处理文件所在的目录并运行:'MkPCBld.bat Release NoWait NoDemo' 工作正常。这就是令人讨厌的地方。
-
@Falstaff:这表明这是一个权限问题。
标签: windows-7 path cmd windows-xp cd