运行时安全修改批处理文件

查尔斯

我正在实现类似于Gradle包装器的批处理文件。这个想法是它将下载主应用程序并运行它,而用户不必下载并安装应用程序本身。

一切正常,现在我正在实现更新应用程序。这涉及用新版本的批处理文件替换批处理文件(除了对批处理文件本身所做的任何更改之外,该新版本还具有新的下载URL)。

但是,当我的应用程序替换批处理文件时,这会导致奇怪的结果(如https://stackoverflow.com/a/31257641/1668119和该问题的其他答案所述)。有没有一种安全的方法可以在运行时替换批处理文件,而不会导致新行或删除行引起问题?

查尔斯

根据Mofi的评论和他们链接到的答案,我使用的是这样的内容:

setlocal EnableDelayedExpansion

my-application && exit 0 || exit !ERRORLEVEL!

批处理文件执行器似乎一次只读取一行文件,因此始终在该行上退出意味着它永远不会尝试从批处理文件中读取更多内容,因此,是否修改了批处理文件并不重要。

setlocal EnabledDelayedExpansion之所以重要,是因为否则ERRORLEVEL将在运行应用程序之前对其进行评估,因此即使应用程序失败,脚本也始终返回0。

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

运行多个批处理文件,但有例外

从Java流程执行时,跳过批处理文件中的暂停命令

从Windows批处理文件调用SUBST

使用Python运行批处理文件时出现问题

从批处理文件运行Powershell命令以重命名网络驱动器

忽略批处理文件中以#开头的处理行

如何验证批处理文件中是否存在文件?

批处理文件以删除超过N天的文件

将2个批处理文件合并为1个,但使它们在2个命令窗口中运行

在批处理文件网址中添加加号

在批处理文件中定义和使用变量

在Powershell中设置批处理文件的变量

在Windows批处理文件中的SET上使用变量

如何在批处理文件中提示用户输入

R中的批处理文件中的setwd()

批处理文件中的字符串替换问题

VSTO Office Interop:在运行时处理Office XML

当要求运行时,Python块中的多处理

批处理文件,将所有文件内容读入单个文件

如何通过批处理文件中的时间戳识别/获取文件?

批处理文件以计数子目录中的文件类型

批处理文件以从txt文件中删除前18个字符

Windows批处理文件从定界符之间没有数据的文件读取

在运行时动态设置所有属性文件:

Powershell:以32位模式运行时缺少DLL文件

从批处理文件调用脚本时如何指定开关参数

如何将大于和小于添加到批处理文件变量中

批处理文件中的空白,并保存在其他目录中

替换批处理文件变量进给ffmpeg程序中的特殊字符