Batch file 批处理脚本未按预期分配变量
我正在编写一个批处理脚本,它将分配一个变量字符串,然后对其进行修剪。我面临两个问题:Batch file 批处理脚本未按预期分配变量,batch-file,Batch File,我正在编写一个批处理脚本,它将分配一个变量字符串,然后对其进行修剪。我面临两个问题: 变量分配不正确。它从变量文件中获取最后一个值 变量在我第一次运行脚本时没有赋值。我需要再次运行脚本,看看变量是否已分配。在第三次运行时,我可以看到修剪正在工作 我的脚本如下所示: @echo off for /f "tokens=*" %%a in ('findstr "W3SVCWINSRVRHOSTS" "C:\Data\SiebelAdmin\Commands\file.txt"') do ( for /
@echo off
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%
)))
第三次运行时的输出如下所示:
你掉进了陷阱--试试这个:
@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
的值传递到块之外。如果有帮助,不要忘了向上投票或接受答案……;)
@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%