使Windows快捷启动相对于文件夹的位置?
我有一个使用这个文件结构的游戏:
GAME FOLDER ->data ->data->run.bat
我想在游戏文件夹中放一个run.bat
的快捷方式,但是如果我移动它,或者别人安装它,它将不起作用,因为目标是错误的。 有没有办法让目标和“开始”相对于游戏文件夹?
步骤1:
右键单击你的/ bat /文件夹,然后点击创build快捷方式 。
在Windows 7上,您将获得bat - Shortcut
当前目录中的bat - Shortcut
。
在Windows XP上,您将获得Shortcut to bat
。
第2步:
右键单击刚刚创build的快捷方式,然后单击属性 。
将目标 (在Windows 7的快捷方式选项卡下)更改为以下内容:
%windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"
点击OK。 在Windows 7上,快捷方式图标将更改为cmd.exe图标。 这对于一个.bat快捷方式来说可能是可以接受的,但是如果您想要更改图标,请再次打开该快捷方式的属性,然后单击更改图标… (同样,在Windows 7的快捷方式选项卡下)。 此时,您可以浏览…图标或input默认系统图标列表
%SystemRoot%\system32\SHELL32.dll
在Browse...
button的左边并按下Enter键 。 这适用于Windows 7和Windows XP,但由于样式更新,图标是不同的(但是可识别地相似)。 根据快捷方式所在的Windows版本,图标有时会相应地改变。
更多信息:
请参阅使用传递给已启动程序的参数的“start”命令,以便更好地理解第一个Target命令开头的空白双引号。
根据微软的说法,如果你将'Start In'
框留空,脚本将运行在当前的工作目录中。 我已经在Windows 7中试过这个,它似乎工作得很好。
来源: http : //support.microsoft.com/kb/283065
如果你可以设置一个系统variables(类似于%MyGameFolder%),那么你可以在你的path和快捷方式中使用它,并且Windows会为你填充剩下的path(即%MyGameFolder%\data\MyGame.exe
)。
这是一个小小的引子 。 您可以通过batch file设置该值,也可以通过编程方式设置该值,以分享您计划创build快捷方式的方式。
尝试使用Relative (Windows命令行应用程序)。
基本上,一个快捷方式可以有一个相对的链接,但Windows无法实际做一个。
我喜欢leoj3n的解决scheme。 它也可以用来设置一个相对的“start in”目录,这是我使用start的/ D参数所需要的。 没有/ c或/ k作为cmd的参数,后续的启动命令不会运行。 / c将在运行命令后立即closuresshell,/ k将保持打开状态(即使命令完成后)。 所以,如果你正在运行的标准吐出来,你需要看到它,使用/ k。
不幸的是,根据lnk文件规范 ,图标并不保存在快捷方式中,而是“使用环境variables进行编码,这使得可以find位置不同但是使用环境variables表示的计算机上的图标”。 因此,如果path正在改变,并且您正尝试从您指向的可执行文件中获取图标,则可能无法正确传输。
您可以通过更改文件path来手动创build相对快捷方式。 首先在通常的上下文菜单中为您的文件和属性 – >文件的位置创build一个新的Windows快捷方式:
%windir%\explorer.exe "..\data\run.bat"
完成快捷方式之后,在属性中设置以下内容:
目标:
%comspec% /k "data\run.bat"
- 如果您不希望提示在运行后保持打开状态,请删除
/k
。开始:
%cd%\data
在阅读了几个答案之后,我决定用一个简单的解决scheme做到这一点:不用快捷方式,我只用一行命令就可以调用主.bat文件,它可以像我想的那样工作。
您可以让batch file更改当前的工作目录(CD)。
最简单的解决scheme:> 环境variables方便的小生物。
如果其他人要安装/解压任何地方在他们各自的系统驱动器(通常c :)。
为了演示目的,调用我们的应用程序“test.exe”(可以是任何可执行文件/文件不必exe),它将被安装/解压缩到文件夹MYCOMPANY \ MYAPP \
然后,创build一个使用%SystemDrive%\ MYCOMPANY \ MYAPP \ test.exe作为目标和%SystemDrive%\ MYCOMPANY \ MYAPP \作为启动的快捷方式。
所以现在你想部署它。 使用像“WinRAR”的应用程序。
简单的方法是使用自解压zip文件,整齐地打包成一个“.exe”我会使用一个为我的快捷方式和另一个应用程序。 有办法做一个自解压zip文件提取不同的文件到不同的目录,但我还没有玩过它。
另一种方法是为shorcut制作一个selfextract,将其embedded到应用程序的selfextract中,然后应用一次运行脚本,因为您知道该文件将在哪里。 等等
如果你想让安装程序使用自定义安装/解压缩目录,那么看看NSIS是一个可脚本化的安装系统。
发挥它的乐趣,希望我的信息帮助。
对于leoj3n的解决scheme(使控制台窗口消失)只是一个小的改进:而不是把%windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"
你也可以尝试添加下面的命令: %windir%\system32\cmd.exe /c "%CD%\bat\bat\run.bat"
然后在你的命令前joinstart
run.bat
。 这将使控制台窗口消失,但其他一切保持不变。
我不知道我是对的,还是我错过了一些东西,但是现在(2016-07-11,运行Win7 Enterprise SP1)LNK文件适应移动,甚至改变驱动器盘符后跑在一个新的地方! 我在我的USB驱动器上创build了一个新的快捷方式,并试图以相对位置保持不变的方式移动快捷方式和目标,然后我更改了驱动器号。 在我双击它之后,适用于这两种情况和目标字段的快捷方式都被调整了。
看起来微软已经在过去的一个更新中解决了这个问题。
请有人确认这一点。
看起来像迄今没有解决scheme。
在用于审计的ACL软件中,我们可以使用“..”来表示起始目录。 我希望Windows可以允许类似的东西。
例如:原始path:c \ windows \ games \ u2 \ strife.exe如果快捷方式粘贴在“游戏”文件夹,和朋友喜欢复制…
path应该(可以)编辑为“.. \ u2 \ strife.exe”