windows - 我可以防止一个批处理文件同时被 1 个以上的用户执行吗

标签 windows batch-file user-management

我有一个批处理文件,可以更新 Web 项目并清理/重建它。我使它对网络用户可执行。现在我想让批处理只能由一个用户同时执行。就像编程语言中的同步对象。

有没有可能做到这一点?

最佳答案

检查批处理文件是否已在运行的简单解决方案是使用文件系统。

批处理文件可以检查文件是否存在并在这种情况下拒绝执行,否则它会创建文件、运行命令并最终删除文件。

@echo off
if exist "C:\Temp\BatchLock.txt" goto BatchRunning
echo Batch file is running by %username%.>C:\Temp\BatchLock.txt

rem All other commands of the batch file

del C:\Temp\BatchLock.txt
goto :EOF

:BatchRunning
type C:\Temp\BatchLock.txt
echo/
echo Please run the batch later again.
echo/
echo Press any key to exit ...
pause >nul

当然 C:\Temp 不是锁定文本文件的良好存储位置。它必须是一个对所有用户都相同的目录,一个在服务器上对所有用户都具有写权限的目录。

关于windows - 我可以防止一个批处理文件同时被 1 个以上的用户执行吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25966202/

相关文章:

windows - Windows Web Server 2008 R2 上的 Datasnap/DCOM

windows - 无法在 MS VS 代码上运行 flutter 命令

windows - 如何将软件的输出发送到 Microsoft Windows 虚拟键盘?

batch-file - 如何使用cmd从文本文件中删除第一行?

hadoop - 如何从客户端Windows计算机访问hadoop群集(unix)

java - 使用 JAX-RS Jersey 进行身份验证和授权的简便方法

linux - 来自 Linux 的 WinRM 脚本

Linux cron 作业无法执行在 shell 中运行的部分脚本

node.js - Node 组/用户管理框架

php - 转换 LAMP 应用程序以作为 Windows MSI 分发