我有一个游戏使用这个文件结构:
GAME FOLDER
->data
->data->run.bat
我想在游戏文件夹中放置一个指向run.bat
的快捷方式,但如果我移动它,或者其他人安装它,它将无法正常工作,因为目标是错误的。有没有一种方法可以使目标和“起始位置”相对于GAME FOLDER?
你可以让批处理文件更改当前的工作目录(CD)。
cd
命令的样子,使用相对路径到子文件夹data
。请注意,..\data
是不起作用的,它比父级高一个层级,正如Glenn在https://dev59.com/InM_5IYBdhLWcg3w6X1e#29261618上的评论中所讨论的那样。根据Anders的评论,有一些方法可以引用“当前目录的子目录data”? - ToolmakerSteve使用windows命令行中的mklink命令可以创建具有相对路径的链接。
mklink /d \MyDocs \Users\User1\Documents
这可能是创建链接的最佳方式,因为显然,快捷方式的行为可能会有所不同,也许取决于它们的创建方式(UI vs mklink命令)。当我更改根文件夹时,我观察到了一些奇怪的快捷方式行为。
%windir%\system32\cmd.exe /c"%CD%\bat\bat\run.bat"
,然后在run.bat
的命令前还加入start
。 这样会使控制台窗口消失,但其他一切保持不变。最简单的解决方案:> 环境变量 这些小家伙很方便。
如果另一个人需要在他们各自的系统驱动器上安装/解压缩到任何位置(通常是 c:)。
为了演示目的,我们将应用程序称为“test.exe”(可以是任何可执行文件/文件,不必是exe),并将其安装/解压缩到文件夹 MYCOMPANY\MYAPP\ 中。
然后只需创建一个使用 %SystemDrive%\MYCOMPANY\MYAPP\test.exe 作为目标和 %SystemDrive%\MYCOMPANY\MYAPP\ 作为起始位置的快捷方式。
所以现在你想部署它。 使用像“WinRAR”这样的应用程序。
最简单的方法是使用自解压缩zip文件,整洁地打包为“.exe”文件。我会为我的快捷方式使用一个文件,为应用程序使用另一个文件。有一些方法可以制作一个自解压缩的 zip 文件,将不同的文件提取到不同的目录中,但我还没有尝试过。
另一种方法是为快捷方式创建一个自解压文件,将其嵌入应用程序的自解压文件中,然后应用运行一次脚本,因为您知道文件将要去哪里。 等等。
如果您想让安装程序使用自定义安装/解压缩目录,则最好查看NSIS可编写脚本的安装系统。
尝试一下,很有趣,希望我的信息有所帮助。
'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
cmd
中:mklink /D SYMLINK_NAME RELATIVE_TARGET_PATH