微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

稍后我将解释我的用例,基本的问题是该批处理文件在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 举报,一经查实,本站将立刻删除。