Batch file CMD:仅使用文件名将文件路径存储到变量中

Batch file CMD:仅使用文件名将文件路径存储到变量中,batch-file,variables,cmd,path,directory,Batch File,Variables,Cmd,Path,Directory,我正在创建一个程序,允许用户“搜索”计算机中的文件,如果文件存在,它将在新目录中创建一个指向该文件的快捷方式。可以使用任何和所有扩展。问题是,为了启动某些扩展名(如.jar),我需要文件的路径 到目前为止,我所看到的示例中没有一个能够成功地帮助我实现这一点,因为它们通常需要一条已经给定的路径来拆分 前 我怎样才能只将它给出的路径存储到变量中 非常感谢您的帮助。如果您使用for循环来处理dir命令的输出,batch将自动知道路径和文件名。从这里开始,只需使用众所周知的%~dp语法即可获得路径 fo

我正在创建一个程序,允许用户“搜索”计算机中的文件,如果文件
存在
,它将在新目录中创建一个指向该文件的快捷方式。可以使用任何和所有扩展。问题是,为了
启动
某些扩展名(如.jar),我需要文件的
路径

到目前为止,我所看到的示例中没有一个能够成功地帮助我实现这一点,因为它们通常需要一条已经给定的路径来拆分

我怎样才能只将它给出的
路径
存储到变量中


非常感谢您的帮助。

如果您使用
for
循环来处理
dir
命令的输出,batch将自动知道路径和文件名。从这里开始,只需使用众所周知的
%~dp
语法即可获得路径

for /f "delims=" %%A in ('dir /b /s /a:-d') do echo %~dpA
其中
d
获取驱动器,
p
获取路径

for /f "delims=" %%A in ('dir /b /s /a:-d') do echo %~dpA
其他选项(来自/?的
):

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file