如何保留bat文件快捷方式的原始目录?

时间:2019-01-06 15:00:53

标签: batch-file

我已经创建了一个批处理文件,并在启动游戏之前备份了一些保存的游戏文件,这是脚本:

@echo off
set SaveGameLocation=C:\Games\MK X\Binaries\Retail\3DMGAME\Player\remote\user

:: variables
set drive=%cd%\Backup
set dateNtime="%date:~0,2%-%date:~3,2%-%date:~6,6%_%time:~0,2%-%time:~3,2%"
set backupcmd=xcopy /s /c /d /e /h /i /r /k /y

echo ### Backing up your Sites directory...
%backupcmd% "%SaveGameLocation%" "%drive%\%dateNtime%"

"C:\Games\MK X\Binaries\Retail\MKX.exe"

此批处理批处理文件位于C:\Save Game Backup\MKX中,因此我在桌面上创建了该文件的快捷方式,问题是当前工作目录%cd%从批处理文件位置更改为在桌面上,我知道我可以简单地将%cd%更改为C:\Save Game Backup\MKX,但是我总是在更改目录,我想要一个最终的解决方案,将快捷方式的文件位置保留为当前目录。

1 个答案:

答案 0 :(得分:3)

您不应该使用%CD%是当前目录,而是使用%~dp0 ,它是驱动器和路径(包括反斜杠) ,正在运行的批处理文件。

@Echo Off
Set "ExeLocation=C:\Games\MK X\Binaries\Retail"
Set "SaveGameLocation=%ExeLocation%\3DMGAME\Player\remote\user"
Set "drive=%~dp0Backup"
Set "backupcmd=XCopy /C /D /E /H /I /K /R /Y"

Set "dNow=%DATE%"
Set "tNow=%TIME%"
Set "dateNtime=%dNow:~0,2%-%dNow:~3,2%-%dNow:~6,6%_%tNow:~0,2%-%tNow:~3,2%"

Echo ### Backing up your Sites directory...
%backupcmd% "%SaveGameLocation%" "%drive%\%dateNtime%"

Start /D "%ExeLocation%" MKX.exe