批处理脚本未按预期分配变量

2023-11-30

我正在编写一个批处理脚本,它将分配一个变量字符串,然后修剪它。我面临两个问题:

  1. 变量分配不正确。它从变量文件中获取最后一个值。
  2. 我第一次运行脚本时未分配变量。我需要第二次运行脚本以查看变量是否已分配。在第三次运行时,我可以看到修剪正在起作用。

我的脚本如下所示:

@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%
)))

第三次运行时的输出如下所示:

> 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

你掉进了延迟扩张陷阱——试试这个:

@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块,延迟变量扩展处于活动状态。要实际使用此功能,请将变量括起来!!而不是%%.
Since setlocal为变量设置一个新的命名空间,复合endlocal & set需要声明来转移值str超出街区。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批处理脚本未按预期分配变量 的相关文章

随机推荐

  • offsetTop 与 jQuery.offset().top

    我读过offsetLeft and offsetTop不能在所有浏览器中正常工作 jQuery offset 应该为此提供一个抽象 以提供正确的值 xbrowser 我想要做的是获取元素被单击的位置相对于元素左上角的坐标 问题是jQuery
  • 在 iOS 上读取 sms.db 和 call_history.db 文件?

    我正在为越狱的 iPhone 5s iOS 7 1 1 开发一个应用程序 以获取存储在相应 db 文件中的通话日志和消息 我有一些疑问 我有一个有效的证书 配置文件 并且我的应用程序是使用此配置文件签名的 因此是否有必要删除此配置文件并使用
  • 错误:控制到达非 void 函数的末尾

    我在学习C 我从教科书上复制了这段代码 在编译代码时 最后出现错误 错误说 控制到达非 void 函数的末尾 它位于代码的末尾 include ComplexNumber hpp include
  • 限制线程数和 Java 并发

    我找不到使用最新 JAVA 并发例程的具体案例的示例 我打算使用threads处理可能包含 0 到数千个请求的开放队列中的项目 我想限制在任何给定时间都有不少于 0 且不超过 10 个线程处理队列项目 是否有针对这种特定类型案例的 Java
  • 如何使用 JqGrid 更改 select2 下拉列表的选定值?

    我用的是奥列格的选择2演示 但我想知道是否可以更改下拉菜单中当前选择的值 例如 如果加载的四个值是 Any Fruit Vegetable Meat 下拉列表默认为 Any 我怎样才能将其更改为 Fruit 在 JqGrid 事件中load
  • Android Studio 空白活动

    我使用的是 Android Studio 2 1 没有 空白活动 选项 我见过有人问过这个问题 一般的建议是 自己做一个 问题是我对 Android 开发一无所知 所以我正在学习这个教程http developer android com
  • jQuery onclick 删除表格行

    如何点击删除表格行 这里有一个jsfiddle 我只想删除 del 链接嵌套的行 而不是脚本现在执行的最后一行 单击呼叫delTableRow 函数并且需要更改该函数以删除嵌套的 del 链接行
  • jqGrid 多选上的 PrettyCheckable

    我有一个jqGrid带有我用 CSS 自定义的多选复选框的表格和漂亮可检查 要自定义我设置的表格的所有复选框 prettyCheckable 如下 jQuery document ready function input type chec
  • sqoop 与 mysql 的导入问题

    我有一个基于 cdh5 的 hadoop ha 设置 我尝试使用 sqoop 从 mysql 导入表失败 并出现以下错误 15 03 20 12 47 53 ERROR manager SqlManager Error reading fr
  • 空格上仅支持 JavaScript 的自动换行功能?

    我发现的大多数自动换行功能都绑定到 css 和 或浏览器 dom 我正在 javascript 环境 rhino 中工作 需要找到或设计一个更好的自动换行 该换行可以在给定行长度值之前的空白处中断 我当前的解决方案只是搜索给定字符之前的最后
  • C++ 中如何进行柯里化?

    什么是柯里化 C 中如何进行柯里化 请解释一下STL容器中的活页夹 1 什么是柯里化 柯里化只是意味着将多个参数的函数转换为单个参数的函数 使用一个例子可以很容易地说明这一点 取一个函数f它接受三个参数 int f int a std st
  • 解决 pex 内部类

    当被测试的类是内部类时 有什么方法可以让 pex 工作吗 密封课程怎么样 我的意思是 毕竟这种类型的工具非常适合 API 测试 有时您可能希望至少将内容保留在内部 Thanks 通过以下方式为测试组件提供内部可见性InternalsVisi
  • 有没有办法模糊匹配或提供分数作为行值应与哪个 ID 或组关联的假设?

    我有一个看起来像这样的数据集 structure list ID c 1 2 3 4 5 6 7 8 9 10 Date c 2020 01 n04 2020 04 03 2020 12 10 2020 09 12 2020 11 19 2
  • 在运行时修改函数(拉出局部变量)

    想象一下这个简单的函数创建变量的修改值default modified default 0 def modify modified default 1 print modified replace with OS call I can t
  • 从单词列表中提取所有匹配的关键字并创建一个新的数据框 pandas [重复]

    这个问题在这里已经有答案了 我想从意见列中提取所有匹配的关键字 如果它们与关键字列表中的单词匹配 则在新列中打印所有匹配的单词 包括重复的单词 当前代码仅提取第一个匹配的单词 不包含重复的单词 import pandas as pd df
  • 作为 Maven 构建过程的一部分运行量角器测试

    我有一个 Maven 项目 我不想更改 POM 以便当我构建项目 Clean Install 时 在编译部分之后 将启动一组量角器测试 打开 selenium 并做几件事 并且仅如果测试通过 则构建本身也通过 我似乎找不到能为我提供这种功能
  • R 计算 for 循环中的平均值

    我有我的代码 V max 10 V min 0 n 1 H 1 C c 0 0 01 0 1 1 par mfrow c length C 1 1 mar c 2 0 2 0 oma c 1 5 0 0 V lt function C H
  • 桌面 DLL 中的 Prism PopupChildWindowAction 缺失

    我正在尝试在 WPF Prism 桌面应用程序中实现模式对话框 从 Prism 指导中我可以看到正确的方法应该是使用交互
  • Xamarin Forms - 在运行时翻译抽屉菜单项

    我正在遵循优秀的教程 Link 关于 Xamarin Forms 中的多语言 一切正常 但我有一个问题 在我的应用程序中 我使用 Syncfusion 的导航抽屉 因为我在 ListView 中生成菜单项 如下所示 DrawerPage x
  • 批处理脚本未按预期分配变量

    我正在编写一个批处理脚本 它将分配一个变量字符串 然后修剪它 我面临两个问题 变量分配不正确 它从变量文件中获取最后一个值 我第一次运行脚本时未分配变量 我需要第二次运行脚本以查看变量是否已分配 在第三次运行时 我可以看到修剪正在起作用 我