gpt4 book ai didi

python - 多次执行 Python 脚本的批处理脚本

转载 作者:可可西里 更新时间:2023-11-01 11:11:51 25 4
gpt4 key购买 nike

我需要运行一个 Python 脚本 N 次,所以我创建了以下脚本:

@ECHO OFF
cd PATH_TO_SCRIPT
@set port=5682
set /P INPUT=Number of servers:
FOR /L %%I IN (1, 1, %INPUT%) DO (
@set /a newport=%port%+1
start cmd /k > start python server.py -i 192.168.1.2 -p %newport%
)
pause

如果我输入 1 作为输入值,这样只有一次迭代,脚本可以运行,但如果我选择 2,脚本只运行一个服务器实例并告诉我:“无法访问文件。该文件已被另一个进程使用”。怎么了?

最佳答案

@ECHO OFF
setlocal enabledelayedexpansion
cd PATH_TO_SCRIPT
set port=5682
set /P INPUT=Number of servers:
set /a newport=%port%
FOR /L %%I IN (1, 1, %INPUT%) DO (
set /a newport+=1
start cmd /k > start python server.py -i 192.168.1.2 -p !newport!
)
pause

逻辑错误:在每次迭代中,您都将 1 添加到 PORT,但 port 永远不会改变。您需要将 newport 初始化为 port 的值并递增 newport

小样式问题:@echo off 后不需要@echo off 关闭命令报告。 @ 在命令之前为该命令 关闭命令报告

主要问题:请参阅有关 延迟扩展 的许多关于 SO 的文章。本质上,%var% 指的是 var 的值,因为它是在循环的开始 设置的,如果您想访问值在循环中变化时,您需要调用 delayedexpansion 并使用 !var!

您要解决的问题:cmd/k 不是必需的,而 > 正如已经指出的那样,很奇怪。

此外,您的逻辑将从 5683 开始编号,因为您在调用 start 之前添加了 1 。可能是也可能不是问题。

关于python - 多次执行 Python 脚本的批处理脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39693902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com