我试着在谷歌上搜索这个,并没有真正学到任何东西,因为搜索结果通常与其他递归主题有关。我想知道的是,如果文件夹在路径中,它是递归定义的(在Windows上)吗?
我想创建一个C:\StandalonePrograms并将其添加到path中。它将包含一堆编程语言和其他程序,这些程序通常来自zip文件。我想知道,如果将程序目录添加到其中,是否可以调用所有程序。
例如,如果我有C:\StandalonePrograms\SomeProgram,我可以打开一个命令提示符,输入someCommand并期望它从C:\StandalonePrograms\SomeProgram\bin文件夹运行吗?
或者我需要在我的路径中显式地定义C:\StandalonePrograms\SomeProgram\bin?
如果我做不到,有没有什么变通办法来达到我想要的情况?
发布于 2011-04-08 01:31:05
您需要单独指定每个目录,路径机制不会遍历子目录。
解决方法可以是一个充满批处理文件(某种类型)的目录,这些文件以完整路径启动真正的工具
发布于 2017-08-26 10:47:26
这里有一个解决方法。将其另存为"SetMyPath.bat“(或使用其他名称):
@echo off
set dir=%*
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /s /ad /o:d /b "%dir:"=%"') do set path=%%i;!path!
cmd(在这里,"%dir:"=%"只允许您在调用此文件时省略名称中包含空格的目录两边的引号。如果您不需要这样做,那么%1可以代替它。)
这个文件有一个命令行参数:目录。它将启动一个新的cmd.exe副本,其中给定目录下的文件将可用:
C:\> mysqldump.exe
File not found.
C:\> SetMyPath.bat C:\Program Files\MySQL
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\> mysqldump.exe
Usage: mysqldump [OPTIONS] database [tables]
C:\> exit在本例中,第一个命令显示mysqldump.exe不在路径上。执行批处理文件后,将启动一个新的cmd.exe,其中提供了mysqldump.exe。当您使用完它时,exit会返回到cmd.exe的原始副本。
如果在不同的子目录下有.exe文件的两个副本,将启动最近更新目录中的副本(由于/o:d)。在此示例中,假设最后更新了最新版本的MySQL的目录,则将启动最新版本的mysqldump.exe。
可以对批处理文件进行修改,以保证启动.exe的最新副本(如果需要,请在注释中向我询问)。
https://stackoverflow.com/questions/5585109
复制相似问题