2013-09-12 14:49:06 +0000 2013-09-12 14:49:06 +0000
53
53

在Windows快捷方式中使用相对路径

我有一个文件夹方案,比如(高度简化的版本):

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-folder-is 中处理。在本例中,目标是一个文件夹。

Ответы (8)

53
53
53
2013-09-12 15:08:36 +0000

你可以使用这个工具。 Relative .

它基本上是用你的相对路径参数创建一个 “explorer.exe "的快捷方式,只需右键单击即可(与创建普通快捷方式相同)。

当然你也可以手动操作。
在你的例子中,你会在 "New Files/Tools "中创建一个快捷方式到

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

你可以使用Windows常用的上下文菜单 "新建/创建快捷方式",并在 "键入项目的位置 "框中输入上述命令。

31
31
31
2013-09-12 15:45:43 +0000

一个可能的解决方案是使用一行批处理文件而不是捷径来打开你想打开的任何东西。批处理文件会让你在其内部使用相对路径,并且无论批处理文件放在哪个文件夹中,都会有一个工作目录。


另一个选项是让你的快捷方式以cmd.exe代替你正在启动的任何东西启动,然后将你正在启动的任何东西作为参数传递给cmd.exe

%COMSPEC%是一个环境变量,指向默认的命令提示符

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

7
7
7
2014-05-12 01:21:58 +0000

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

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

6
6
6
2016-08-18 16:47:41 +0000

这个技巧的工作原理是:

%COMSPEC% /C start“你的exe名称,不含路径”

示例

%COMSPEC% /C start winmine.exe。

4
4
4
2016-08-30 08:19:38 +0000

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

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

如果没有高架访问,你可以使用/j

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

要移动整个结构,你应该使用xcopy命令。例如,如果所有的结构都在container下,那么就应该使用xcopy命令来移动整个结构。

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

输入命令

xcopy /b /e container container2

将创建以下结构。

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

/b开关将复制Symbolic links而不是将它们转换为文件夹。(注意/bcopy命令有完全不同的含义)

1
1
1
2015-09-26 02:33:10 +0000

快捷方式可以将它的位置记录在一个变量中,并使用该变量调用一个命令。例如,创建快捷方式 “Grandparent",目标:

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

创建批处理文件 "C:\Here.bat",单行:

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

现在,无论Grandparent在哪个文件夹中,当你点击它时,其父文件夹的父文件夹就会打开。它甚至可以和根目录下的祖父母一起工作。

你的批处理文件可能在启动除explorer.exe以外的其他文件时使用了%HERE%。或者在快捷目标中的&&后面的Here.bat,你可以调用一个使用%HERE%的程序。

在我的系统中,Grandparent似乎可以用&或&&来工作。

1
1
1
2016-01-01 08:42:40 +0000

如果你在快捷方式的属性中留'Start In'框为空,链接就会相对于当前的工作目录。

也请参见 https://stackoverflow.com/a/17951772/40961

0
0
0
2019-06-20 16:48:10 +0000

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

示例:

  • 环境变量。

  • 捷径目标:

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