我正在处理一个批处理脚本,它将分配一个变量字符串然后修剪它。我面临两个问题:
我的脚本如下所示:
> C:\Users\parthod\Desktop>b.bat
in loop
xsj-uvapoms72
7.2.27
7.2.27
in loop
xsj-uvapoms82
7.2.27
7.2.27
in loop
172.17.2.26
7.2.27
7.2.27
in loop
172.17.2.27
7.2.27
7.2.27
第三次运行时输出如下:
{% extends %}, {% include %}, ...
答案 0 :(得分:2)
你陷入delayed expansion陷阱 - 试试这个:
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%a in ('findstr "W3SVCWINSRVRHOSTS" "C:\Data\SiebelAdmin\Commands\file.txt"') do (
for /f "tokens=2 delims==" %%b in ("%%a") do (
for %%c in (%%b) do (
echo in loop
set str=%%c
echo %%c
echo.!str!
set str=!str:~-6!
echo.!str!
)))
endlocal & set str=%str%
在setlocal
/ endlocal
块之间,延迟变量扩展处于活动状态。要实际使用此功能,请将变量括在!!
而不是%%
由于setlocal
为变量设置了新的命名空间,因此需要使用复合endlocal & set
语句将str
的值传输到块之外。