路径递归

时间:2011-04-07 17:28:13

标签: windows path

我尝试在Google上搜索此内容并没有真正学到任何东西,因为搜索结果通常与其他递归主题相关。我想知道的是,如果文件夹在Path中,它是否以递归方式定义(在Windows上)?我想创建一个C:\ StandalonePrograms并将其添加到路径。它将包含一堆编程语言和其他通常来自zip文件的程序。我想知道,如果通过添加程序目录,我可以调用所有程序。例如,如果我有C:\ StandalonePrograms \ SomeProgram我可以打开命令提示符类型someCommand并期望它从C:\ StandalonePrograms \ SomeProgram \ bin文件夹运行吗?或者我是否需要在路径中明确定义C:\ StandalonePrograms \ SomeProgram \ bin?如果我不能有任何解决方法来实现我想要的情况?

2 个答案:

答案 0 :(得分:7)

您需要单独指定每个目录,PATH机制不会遍历子目录。

解决方法可能是一个充满批处理文件(某种类型)的目录,它以完整路径启动真正的工具

答案 1 :(得分:2)

这是一种解决方法。将其另存为“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的最新副本(如果需要,请在评论中询问我)。