Ema*_*nde 5 windows string replace batch-file command-line-interface
在批处理文件中,我有一个包含IP的变量.仅举例如:
SET ip = 170.150.120.10
我想定义另一个变量,将最后一个八位字节替换为1,在示例中将是170.150.120.1.
IP可以改变(它是动态定义的),其长度不同,因此捕获固定长度的子串并连接它将无法在任何时候工作(在示例中它将是SET baseIP = %ip:~0,9%.1).
如何解决这项任务?
Windows命令行中是否有一些RegEx支持?
maytham-ɯɐɥıλɐɯ是一个简单解决方案的关键组成部分 - FOR/F. 但是这个解决方案有很多复杂性,似乎与这个问题无关.
答案可以很简单:
@echo off
set "ip=170.150.120.10"
for /f "tokens=1-3 delims=." %%A in ("%ip%") do set "new_ip=%%A.%%B.%%C.1"
echo new ip=%new_ip%
Run Code Online (Sandbox Code Playgroud)
注 -您=在问题的SET语句中包含前后空格.这是个坏主意,因为所有空间都很重要.您有一个以空格结尾的变量名,以及以空格开头的值.我从答案中删除了不需要的空格
另外,我将作业括在引号内.只要第一个引号位于变量名称之前,就会忽略最后一个引号之后的所有字符.这可以防止您的价值中出现无意的尾随空格.
编辑2017-09-04
更简单的方法 - 将地址视为文件名,因此最后一个节点成为扩展名.使用简单的FOR和~n修饰符来获取基本名称(前3个节点),然后添加自己的扩展名(最后一个节点).
for %%A in (%ip%) do set "new_ip=%%~nA.1"
Run Code Online (Sandbox Code Playgroud)