我已经创建了一个bat文件,用于删除Redis DB中的特定数据。我有叠码
title:Redis Service
@echo off
cls
ECHO "Redis cache clearing started"
ECHO "fetching started method 1"
redis-cli -h 192.134.56.67 -p 6379 -a MyPassword keys "My.Key.*"
ECHO "fetching started method 2"
FOR /F "tokens=* USEBACKQ" %%F IN (`redis-cli -h 192.134.56.67 -p 6379 -a MyPassword keys "My.Key.*"`) DO (
SET var=%%F
)
ECHO "fetching completed"
ECHO %var%
ECHO "deletion started"
FOR /F "tokens=* USEBACKQ" %%F IN (`redis-cli -h 192.134.56.67 -p 6379 -a MyPassword del %var%`) DO (
SET var2=%%F
)
ECHO %var2%
ECHO "deletion completed"
pause我得到了这样的输出
"Redis cache clearing started"
"fetching started method 2"
1) "My.Key.2554"
2) "My.Key.280017"
3) "My.Key.224"
4) "My.Key.23730"
5) "My.Key.2072545"
"fetching completed"
"fetching started method 2"
My.Key.2072545
"deletion started"
1
"deletion completed"我需要从Redis命令输出中删除整个数据。
发布于 2019-11-12 07:04:31
第一个循环set的变量var的每一次运行都有一个新的值,因此循环的每一次迭代都会将新值重新赋值给var。因此,当您退出该循环时,var只有一个值,在本例中是My.Key.20725545,使用一个循环,不要像需要delayedexpansion那样分配变量。所以您需要这样的操作。Note!! I没有redis,所以我不能测试这个结果,这只是一个例子:
@echo off & cls
title :Redis Service
echo "Redis cache clearing started"
for /F "tokens=*" %%f IN ('redis-cli -h 192.134.56.67 -p 6379 -a MyPassword keys "My.Key.*"') do (
echo "%%~f"
redis-cli -h 192.134.56.67 -p 6379 -a MyPassword del "%%~f"
)
echo deletion completedhttps://stackoverflow.com/questions/58813393
复制相似问题