使用Windows快捷方式的相对路径


49

我有一个类似(高度简化的版本)的文件夹方案:

New Files
 >Tools
 >Scripts
Tested Files
 >Tools
 >Scripts

...,我想在每个文件夹中都有一个快捷方式,从“新文件”子文件夹到“已测试文件”子文件夹。但是此文件夹可能会不时移动,这会破坏上述快捷方式。

有没有一种方法可以使每个文件夹相对快捷?我记得在HTML中执行此操作,您可以在其中设置路径,类似的.../Files方法可以返回到父级,然后再进入新文件夹,但是我不确定Windows快捷方式是否支持此功能?

PS:当目标是文件时,类似相对快捷方式的情况在https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the-文件夹是。在当前情况下,目标是文件夹。


1
您尝试../Files过两个点吗?我没有运行Windows,但我认为它可能起作用。
Brian Z

1
那是我尝试的第一件事,虽然谢谢。:(
加里·莫里斯


@ sancho.s-AFAIK,那里的答案仅适用于执行.bat文件。这里需要的是一种代替引用文件夹的方法。
ToolmakerSteve

@ToolmakerSteve-我猜您只是表面上检查/阅读了“那里的答案”。其中一个(stackoverflow.com/a/1751350/2707864)是此处接受的解决方案,其中一个是ca。4岁。我没有尝试。另一个(stackoverflow.com/a/29261618/2707864)是此处接受的解决方案的后半部分。您甚至对此发表了评论。我试过了,它起作用了。不一定要发表完整的评论,但应尽量避免误导读者。
sancho.s

Answers:


50

您可以使用以下实用程序:Relative

它基本上是用右键单击相对路径的参数来创建“ explorer.exe”的快捷方式(与创建普通快捷方式的方式相同)。

当然,您可以手动执行此操作。
在您的示例中,您将在“新文件\工具”中创建一个快捷方式以

%windir%\explorer.exe "..\..\Tested Files\Tools"

您可以为此使用Windows的常规上下文菜单“新建/创建快捷方式”,并在“键入项目的位置”框中键入以上命令。


我在之前的研究中确实读过有关此内容的文章,但我希望能在Explorer中找到本机解决方案。不过,这将是我的备份计划。
加里·莫里斯

顺便说一句,系统之间的相对路径也会保持不变吗?或者,如果我在不同系统之间移动文件夹/内容,是否需要安装Relative?
加里·莫里斯

3
“相对”仅使用标准的“%windir%\ explorer.exe”创建快捷方式,因此在其他系统上不需要相对。这与%windir%\explorer.exe在创建标准快捷方式时在相对路径之前键入相同。因此,如果您手动执行此操作,则完全不需要相对。(您只需要记住相对路径之前的命令即可)
Rik 2013年

抱歉,我误会了您的第一部分答复,我的意思太糟了!非常感谢!
加里·莫里斯

2
开箱即用的手动解决方案对我不起作用。另外,我必须将“开始于”从更改%windir%为空。
notan3xit

30

一种可能的解决方案是使用单行批处理文件而不是快捷方式来打开要打开的文件。该批处理文件将允许您使用其内部的相对路径,并将具有一个工作目录,其中包含该批处理文件所在的任何文件夹。


另一个选择是让您的快捷方式开始,cmd.exe而不是您要启动的内容,然后将您要启动的内容作为参数传递给cmd.exe

在此处输入图片说明

%COMSPEC%默认情况下指向命令提示符的环境变量。

/C 使控制台在执行命令后自行关闭。


非常感谢你!这对我有用。我花了几个小时试图让我的快捷方式在同一目录中执行Power-shell脚本。
谢尔文·沙达尔(Shervin Shahrdar)

在不同情况下很有用,但是问题不在于打开一些文件。它是关于能够跳至Windows资源管理器中的指定文件夹。有没有办法使这个答案适应呢?
ToolmakerSteve

7

这个技巧有效:

%COMSPEC%/ C开始 “没有路径的exe名称”

%COMSPEC%/ C启动winmine.exe


2
请仔细阅读问题。您的答案没有回答原始问题。
DavidPostill

1
对于Win10 1607,此解决方案完美地回答了OP的问题,目标:%COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"开始于:[留空]
semtex41 '17

@ semtex41嗯?我尝试了一下,结果是一个错误对话框,提示“ Windows无法找到'GoogleChromePortable'。这与OP将Windows资源管理器导航到指定文件夹的目标有什么关系?
ToolmakerSteve

@ToolmakerSteve的标题很好:“使用Windows快捷方式的相对路径”,我为以前提供的答案作了贡献。OP的目标实际上是使路径动态而不是静态。因此,由于我的答复是我如何创建在非静态路径中执行的快捷方式,因此我认为我的回答很合适。
semtex41

@ semtex41- OP的声明目标是“ ..到“ Tested Files”子文件夹的快捷方式..”。如果你没有解释如何让这个答案实现这一目标,那么请澄清你什么增加了答案。您似乎刚刚举了另一个如何执行.exe文件的示例。但是答案已经显示了这样一个例子。因此,请重新陈述您的观点?
ToolmakerSteve

6

我在运行我的Web开发环境的模板中使用了类似的解决方案(打开项目目录,打开浏览器,运行WAMP,运行SCSS ...)

在此处输入图片说明

我可以将参数传递给bat脚本等,这很酷。确保在/c后面加上参数cmd.exe


2

您可以使用mklink。它允许您创建符号链接,硬链接和目录链接。

 mklink /d Tools "..\Tested Files\Tools"  (elevated command prompt)

如果没有提升的访问权限,则可以使用/ j

 mklink /j Tools "..\Tested Files\Tools"

遍历整个结构,应使用xcopy命令。例如,如果所有结构都在container下:

container
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

输入命令

 copy /b /e container container2

将创建以下结构:

container2
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

/ B开关将复制的符号链接,而不是将它们转换为文件夹。


但是,如果将文件夹集移动到其他位置,该链接是否仍然正确?
ToolmakerSteve

这需要我没有的特权,尽管看起来可以完成工作...一旦创建了快捷方式属性,您可以介意发布图像吗?
sancho.s

链接确实是正确的。可以通过“ dir”命令确认。问题是文件管理器的“复制粘贴”,“移动”和“复制”操作将破坏结构。我已经修改了答案,以包括解决方法。
克劳斯

1

快捷方式可以将其位置记录在变量中,并使用该变量调用命令。例如,使用目标创建快捷方式“祖父母”:

%windir%\system32\cmd.exe /c set HERE="%CD%" && "C:\Here.bat"

用单行创建批处理文件“ C:\ Here.bat”:

@%windir%\explorer.exe /n,/select, %HERE%

现在,无论Grandparent在哪个文件夹中,当您单击它时,其父文件夹的父文件夹都会打开。它甚至可以在根目录中与Grandparent一起使用。

您的批处理文件可能已使用%HERE%来启动explorer.exe以外的其他内容。或代替快捷方式目标中&&之后的Here.bat,您可以调用一个使用%HERE%的程序。

在我的系统上,祖父母似乎与&或&&一起工作。


1
&&仅在前一个呼叫未返回错误且&无关紧要时才执行下一个呼叫。在这种情况下,应该没有区别。
leewz16年


0

您可以创建一个环境变量,该变量包含文件系统结构中目标文件夹或其上方文件夹的(相对)路径。

例:

  • 环境变量:

    %Dropbox%=“ C:\ Users \ User 1 \ Dropbox”

  • 快捷目标:

    “%Dropbox%\ Install \ Utilities \ File.exe”

您可以使用DOS命令SETX创建环境变量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.