使用批处理文件,移动具有当前正在运行的程序的目录

问题描述

稍后我将解释我的用例,基本的问题是该批处理文件在Win7中运行正常,但在Win 10中却没有。

::Set windows program path
set BackUpDriveLetter=E:
Set PrimaryDriveLetter=c:
set ProgramFilePath=\Program Files (x86)
Set PRogramDataPath=\ProgramData

::Back the new agent code up to the backup directory
robocopy "%PrimaryDriveLetter%\NDAgent" "%BackupDriveLetter%%ProgramFilePath%\NDAgent" /MIR  | c:\user\braums\com\logthis /red /show /robocopy /source NDAgentUpDate
robocopy "%PrimaryDriveLetter%%ProgramDataPath%\NovaDine" "%BackupDriveLetter%%ProgramDataPath%\NovaDine" /MIR  | c:\user\braums\com\logthis /red /show /robocopy /source NDAgentUpDate


::Need to get rid of the tmp directory if it exists
if exist "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent_tmp" rmdir /s /q "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent_tmp"
if exist "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent_new" rmdir /s /q "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent_new"
if exist "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent\NDAgent.hld.exe" del /f /q "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent\NDAgent.hld.exe"
\BraumsRecovery\bin\FxPosINI.exe
ren "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent\NDAgent.exe" NDAgent.hld.exe
taskkill /F /IM NDAgent.exe
move "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent" "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent_tmp"
wait .1
move "%PrimaryDriveLetter%\RunningUPdates\NDAgent" "%PrimaryDriveLetter%%ProgramFilePath%\NDAgent"
if exist "%PrimaryDriveLetter%\RunningUPdates" rmdir /s /q "%PrimaryDriveLetter%\RunningUPdates"

更多背景信息。该系统是销售点的后台。我们运行自定义外壳而不是资源管理器外壳。功能之一是启动程序,如果停止则重新启动程序。我们一直在重命名正在运行的程序,将新的可执行文件重命名为其位置。终止正在运行的进程,然后自定义外壳程序重新启动新程序。我们当前正在升级到Win 10,并且在实验室中同时运行两个版本。相同的脚本适用于Win 7,但不适用于Win 10。

一个很奇怪的注意事项是,重启后它实际上可能只工作一次,但是第二次尝试失败。添加等待似乎有所帮助,但是我认为这只是第一次启动的原因。 当失败时,脚本似乎挂起。它将永久设置在那里,直到我的耐心耗尽并重新启动为止。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)