我有一个使用此文件结构的游戏:
GAME FOLDER
->data
->data->run.bat
我想在GAME FOLDER中设置run.bat
的快捷方式,但如果我移动它,或者其他人安装它,它将无效,因为目标是错误的。有没有办法让目标和“开始”相对于GAME FOLDER?
答案 0 :(得分:63)
第1步:
右键单击/ bat /文件夹,然后单击创建快捷方式。
在Windows 7上,您将在当前目录中获得bat - Shortcut
。
在Windows XP上,您将获得Shortcut to bat
。
第2步:
右键单击刚刚创建的快捷方式,然后单击属性。
将目标(在Windows 7上的 Shortcut 标签下)更改为以下内容:
%windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"
单击“确定”。在Windows 7上,快捷方式图标将更改为cmd.exe图标。在短信连接到.bat的情况下,这可能是可以接受的,但是如果要更改图标,请再次打开快捷方式的属性,然后单击更改图标... (再次,在快捷方式下< Windows 7上的/ em>选项卡)。此时,您可以浏览... 获取图标,或通过输入
显示默认系统图标列表%SystemRoot%\system32\SHELL32.dll
在Browse...
按钮的左侧,点击 Enter 。这适用于Windows 7和Windows XP,但由于样式更新(但可识别相似),图标不同。根据快捷方式所在的Windows版本,图标 will sometimes会相应更改。
更多信息:
请参阅Using the "start" command with parameters passed to the started program以更好地理解第一个目标命令开头的空双引号。
答案 1 :(得分:32)
根据Microsoft的说法,如果您将'Start In'
框保留为空,则脚本将在当前工作目录中运行。我在Windows 7中尝试过这种方法,看起来效果很好。
答案 2 :(得分:7)
尝试使用Relative(Windows命令行应用程序)。
基本上,快捷方式可以有一个相对链接,但Windows无法实际制作一个。
答案 3 :(得分:4)
如果您可以设置系统变量(类似于%MyGameFolder%),那么您可以在路径和快捷方式中使用它,Windows将为您填写其余路径(即%MyGameFolder%\data\MyGame.exe
)
Here is a small primer。您可以通过批处理文件设置此值,或者如果您分享计划创建快捷方式的方式,则可以以编程方式设置该值。
答案 4 :(得分:3)
我喜欢leoj3n's solution。它也可以用来设置一个相对的“开始”目录,这是我使用start的/ D参数所需要的。如果没有/ c或/ k in作为cmd的参数,则后续的启动命令不会运行。 / c将在运行命令后立即关闭shell,并且/ k将使其保持打开状态(即使在命令完成后也是如此)。因此,如果你正在运行的任何东西吐出标准输出而你需要看到它,请使用/ k。
不幸的是,根据lnk文件specification,图标不会保存在快捷方式中,而是“使用环境变量进行编码,这样可以在位置不同但表达的机器上找到图标使用环境变量。“因此,如果路径发生变化并且您尝试从您指向的可执行文件中获取图标,则可能无法正确传输。
答案 5 :(得分:3)
您可以通过更改文件路径手动创建相对快捷方式。 首先在通常的上下文菜单中,为您的文件和属性创建一个新的Windows快捷方式 - &gt;您的文件的位置:
%windir%\explorer.exe "..\data\run.bat"
答案 6 :(得分:1)
在阅读了几个答案之后,我决定用一个简单的解决方案来做到这一点: 我没有使用快捷方式,只用了一行来调用主.bat,它就像我想要的那样工作。
答案 7 :(得分:1)
我不确定我是对的,还是我错过了什么,但就目前而言(2016-07-11,运行Win7 Enterprise SP1),LNK文件适应移动甚至在新地方运行后更改驱动器号! 我在USB驱动器上创建了一个新的快捷方式,并尝试以相对位置保持不变的方式移动快捷方式及其目标,然后我更改了驱动器号。快捷方式在两种情况下均有效,双击后,目标字段进行了调整。
看起来微软已经在过去的一次更新中解决了这个问题。
请有人确认一下。
答案 8 :(得分:1)
在创建快捷方式后,在“属性”中设置以下内容:
目标:
%comspec% /k "data\run.bat"
- 如果您希望在运行后提示保持打开状态,请删除
/k
。开始于:
%cd%\data
答案 9 :(得分:1)
我在“开始于”字段中尝试了%〜dp0,它工作正常 在Windows 10 x64中
答案 10 :(得分:0)
您可以让批处理文件更改当前工作目录(CD)。
答案 11 :(得分:0)
最简单的解决方案:&gt; Enviroment Variables 方便的小动物。
如果对方要在各自的系统驱动器上安装/解压缩任何地方(通常是c :)。
出于演示目的,请调用我们的应用程序“test.exe”(可能是任何可执行文件/文件不必是exe),它将被安装/解压缩到文件夹MYCOMPANY \ MYAPP \
然后只创建一个使用%SystemDrive%\ MYCOMPANY \ MYAPP \ test.exe作为目标的快捷方式 %SystemDrive%\ MYCOMPANY \ MYAPP \作为开始。
所以现在你想部署它。 使用像“WinRAR”这样的应用程序。
简单的方法是使用自解压zip文件,整齐地打包为“.exe” 我会使用一个用于我的快捷方式,另一个用于应用程序。有一些方法可以创建一个自解压zip文件,将不同的文件提取到不同的目录,但我还没有使用它。
另一种方法是为shorcut制作一个selfextract,将其嵌入到应用程序的selfextract中,然后应用一次运行脚本,因为你知道文件的位置。 等
如果要使安装程序能够使用自定义安装/解压缩目录,那么请查看NSIS脚本安装系统。
玩它很有趣,希望我的信息有所帮助。
答案 12 :(得分:0)
对leoj3n解决方案的一个小改进(使控制台窗口消失):不是将%windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"
放到Windows快捷方式的 Target:字段中,您也可以尝试仅添加以下内容:%windir%\system32\cmd.exe /c "%CD%\bat\bat\run.bat"
然后在start
中的命令前添加run.bat
。这将使控制台窗口消失,但其他一切都保持不变。
答案 13 :(得分:0)
可以使用Windows命令行上的mklink命令创建带有相对路径的链接。
mklink /d \MyDocs \Users\User1\Documents
这可能是创建链接的最佳方式,因为显然,快捷方式的行为可能根据它们的创建方式(UI vs mklink命令)而有所不同。当我更改根文件夹时,我观察到一些奇怪的行为,表示快捷方式的行为。
答案 14 :(得分:0)
“ leoj”提出的方法不允许使用空格传递参数。 给我们:
cmd.exe /v /c %CD:~0,2%"%CD:~2%\bat\bat\run.bat" "Par1-1 Par1-2" Par2
与路径
相似的双引号 C:"\Program Files\anyProgram.exe" "Par1-1 Par1-2" Par2
答案 15 :(得分:-2)
似乎没有解决方案。
在用于审计的ACL软件中,我们可以使用“..”来表示开始目录。我希望Windows可以允许类似的东西。例如:原始路径:c \ windows \ games \ u2 \ strife.exe 如果快捷方式粘贴在“游戏”文件夹中,并且朋友喜欢复制...
路径应该(可以)编辑为“.. \ u2 \ strife.exe”