我有一个 .BAT 文件,里面有一行 robocopy。.BAT 文件位于网络服务器目录中。我使用工作站上的客户端/监视器应用程序向几台无头机器发送运行命令,告诉它们各自运行 .BAT 文件。
我遇到的问题是,有几次当我尝试复制和粘贴命令行以发送到远程机器时,我无意中在我自己的工作站上执行了该命令!
有什么方法可以修改 .BAT 文件或做一些巧妙的事情,使 .BAT 文件不会在当前处于活动状态的登录人员的工作站上意外运行或类似操作?我只需要这样做,这样当我使用它时就不会意外地在我的计算机上运行这个愚蠢的东西。
答案1
也许只是在开始时发出一个短暂的等待命令,比如说 10 秒,并提示“等待 10 秒......”
如果您意外地在自己的工作站上执行了该操作,这将给您足够的时间在您的工作站上取消它。
如果您愿意,请按照此人关于如何创建“计时器”的建议进行操作,或者提出您自己的参数/脚本:
答案2
或者(假设您只想在有限的机器池上运行它)获取批处理文件以检查正在运行的机器的名称,并在执行 robocopy 之前将其与正确机器的列表进行比较:
@echo off
FOR %%A IN (MACHINE1 MACHINE2 MACHINE3) DO IF %computername%==%%A goto :RUNTHEBATCHFILE
ECHO Not running on this PC
goto :THEEND
:RUNTHEBATCHFILE
REM Run something
ECHO Hello
goto THEEND
:THEEND
答案3
设置安全权限,以便您的用户帐户具有读取权限,但没有读取和执行权限?
或者主动拒绝自己对它的“读取和执行”权限。
答案4
如果您的计算机上有一个脚本,并且您希望它在另一台计算机上运行...
使用执行程序在另一个批处理文件中,将脚本复制到所需的计算机并在那里运行它?
运行OtherBat.bat:
@Echo Off
psexec \\SomeServer -c test.bat
psexec \\SomeServer1 -c -u Domain\Admin -p SuperSecret!23$ test.bat
psexec \\SomeServer2 -c test.bat
或者
创建一个环境变量(用户或系统),并检查该变量?如果变量存在 - 则不运行(或运行)。