我有这段代码:
@ECHO OFF
SET "SRCFOLDER=C:\Users\MyUserName\Desktop\PhotoTests"
SET "TEMPCODE=Hi"
ECHO %TEMPCODE%
ECHO.
FOR /F "tokens=*" %%G IN ('DIR /B %SRCFOLDER%') DO (
ECHO %%G
CALL tooltipInfo.bat %%G 19 | FIND /C "Star" > test.txt
SET /P TEMPCODE=<test.txt
ECHO %TEMPCODE%
ECHO.
)
SET /P TEMPCODE=<test.txt
ECHO %TEMPCODE%
ECHO.
PAUSE
我对输出感到困惑,因为我注意到FOR循环中的变量没有被我认为应该是“test.txt”的内容覆盖,每次FOR循环运行时都会有所不同。
出于此示例的目的,文件 tooltipInfo.bat 将根据文件属性中记录的评级来回显文本字符串,如“1 Star”或“3 Stars”。 FIND语句应该会将“0”或“1”保存到 test.txt 文件中。
输出结果为:
Hi
Canon_Locked.JPG
Hi
Nikon_Locked.JPG
Hi
0
Press any key to continue . . .
我可以知道为什么TEMPCODE变量没有被循环覆盖并保留原始值“Hi”。但是在最后一段代码中,它能够读取并回显出文件的实际内容。
答案 0 :(得分:1)
使用import amqp as amqp
class MQ():
mqConn = None
channel = None
def __init__(self):
self.connect()
def connect(self):
if self.mqConn is None:
self.mqConn = amqp.Connection(host="localhost", userid="dev", password="dev", virtual_host="/", insist=False)
self.channel = self.mqConn.channel()
elif not self.mqConn.connected:
self.mqConn = amqp.Connection(host="localhost", userid="dev", password="dev", virtual_host="/", insist=False)
self.channel = self.mqConn.channel()
def sendMQ(self, message):
self.connect()
lMessage = amqp.Message(message)
self.channel.basic_publish(lMessage, exchange="DevMatrixE", routing_key="dev_matrix_q")
和括号时,这是一个常见的错误。问题在于,默认情况下,FOR
和(
之间的每个变量在首次读取行时进行评估,然后在)
的每次迭代中重复使用。
如果变量在循环期间发生变化(通过FOR
),那么您需要将SET
更改为%
以获取括号内的变量,并使用{启用延迟展开{1}}
!