我创建了一个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 命令输出中删除整个数据。
最佳答案
每次运行第一个循环都会设置
的变量var
为新值,因此循环的每次迭代都会将新值重新分配给变量
。因此,当您退出该循环时,var
只有一个值,在本例中为 My.Key.20725545
相反,请使用一个循环,不要像您那样分配变量那么就需要delayedexpansion
。所以你需要这样的东西。 注意!!我没有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 completed
关于windows - 使用bat文件获取和删除redis数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58813393/