【发布时间】:2014-06-22 17:27:46
【问题描述】:
我正在尝试编写一个批处理文件来调用另一个替换目录中的两个文件的批处理文件。这是我的代码:
set mmcIpath="C:"*"\mmc-stable-win32\MultiMC\instances"
call C:\%mmcIpath%\spc_we_replace_CED+CEDU.bat
每当我设置临时环境变量时,它都会说找不到目录。
--附加信息--
我运行一个名为 MultiMC5 的 Minecraft 启动器;它具有运行命令的功能 - 但由于某种原因只有一个命令。所以我想让它调用一个批处理文件来运行多个命令。
我的主批处理文件位于“C:...\MultiMC\instances”中,但我希望程序能够调用它。它不能,因为它在名为“CED (210 mods-)”的子目录中工作。所以我在子目录中放置了另一批以调用主目录(我想对名为“CEDU (300+ mods-)”的第二个子目录执行相同的操作)。我收到此错误:“系统找不到指定的路径。”。它发生在我设置路径时。
我使用的是 Windows 8.1,并搜索了有关如何使用通配符和如何使用 FOR 循环的提示,但没有一种通配符方法对我有用,而且我根本无法理解 FOR 循环。我还尝试删除和添加引号之类的内容以尝试修复它,但这也不起作用。
我的问题:
set 命令是否与通配符兼容,如果是,我该如何让它工作?
【问题讨论】:
-
set将变量设置为字符串。*是字符串中的有效字符。但是您不能使用带有通配符的路径。为什么要使用通配符? -
我想这样做,这样我就可以将目录放在我需要的任何地方,而无需一直更改批处理文件。它似乎更早地适用于具有完全相同代码的批处理文件(尽管由于某种原因我无法检查,因为暂停命令不起作用)。
-
有一种搜索目录的方法 - 但这可能需要几分钟。这是您的选择吗?你越能知道那个目录在哪里,搜索就越快。 (例如:它总是低于 %USERPROFILE% 吗?)
-
是的,但在其他计算机上我想从 USB 记忆棒上运行它(尝试在驱动器名称中使用通配符)。我使用批处理文件链的原因是程序在目录中运行命令,但我想将主批处理保留在外面,因为它很大(占用大量内存,因为它必须排除许多文件并做其他事情)。所以我尝试在目录中使用一个较小的批处理文件来调用它,但这似乎不起作用。
-
-对不起,StackExchange 的新手-“它是”,我的意思是它在 %USERPROFILE% 下并且在 Documents 文件夹中(该程序存在于一堆“固定”目录中,否则它不起作用)。
标签: batch-file path cmd wildcard