wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了批处理文件 – 如何在批处理文件中拆分不带循环的字符串大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我想分割一个字符串两部分,而不使用任何for循环. 例如,我有一个变量中的字符串: str=45:abc 我想在另一个变量中得到一个变量和abc的45.是否可能在批处理文件? 模式就像somenumber:someString 你可以用不同的方式拆分str. for循环,你不想使用它. 尾随部分很容易与*(匹配任何东西直到…) 设置“var2 =%str:*:=%” 领先的部分可以用一个讨厌的技巧
我想分割一个字符串两部分,而不使用任何for循环.

例如,我有一个变量中的字符串:

str=45:abc

我想在另一个变量中得到一个变量和abc的45.是否可能在批处理文件

模式就像somenumber:someString

你可以用不同的方式拆分str.

for循环,你不想使用它.

尾随部分很容易与*(匹配任何东西直到…)
设置“var2 =%str:*:=%”

领先的部分可以用一个讨厌的技巧来完成
设置“var1 =%str :: =”^& REM#%

需要插入符号来避开&符号,
所以有效的结肠将被“& REM#
所以在你的情况下,你得到了替换后的行
设置“var1 = 4567”& REM #abcde
这被分为两个命令

set "var1=4567"
REM #abcde`

完整的代码在这里

set "str=4567:abcde"
echo %str%
set "var1=%str::="^&REM #%
set "var2=%str:*:=%"
echo var1=%var1% var2=%var2%

编辑2:更稳定的领先部分

感谢Dave想要使用换行符.
REM技术不符合引号和特殊字符的内容.
但是使用换行技巧,存在一个更稳定的版本,当split参数比单个字符长时,它也可以工作.

@echo off
setlocal enableDelayedExpansion
set ^"str=456789#$#abc"
for /F "delims=" %%a in (^"!str:#$#^=^

!^") do (
  set "lead=%%a"
  goto :break
)
:break
echo !lead!

解决方案3:补充dbenhams答案

Dbenham在他的解决方案中使用带有管道的换行.
这似乎有点复杂.
解决方案使用这个事实,解析器在非转义换行符之后(当在special character phase之前或之后找到它)时@L_874_18@该行的其余部分.

首先,将冒号替换为延期扩展替换的换行符.
这是允许的,换行符现在是变量的一部分.
然后线设置lead =%lead%剥离尾部.
最好不要在这里使用扩展语法,如果引号是字符串的一部分,那么“lead =%lead%”将会中断.

setlocal enableDelayedExpansion
set "str=45:abc"
set ^"lead=!str::=^

!"
set lead=%lead%
echo "!lead!"

大佬总结

以上是大佬教程为你收集整理的批处理文件 – 如何在批处理文件中拆分不带循环的字符串全部内容,希望文章能够帮你解决批处理文件 – 如何在批处理文件中拆分不带循环的字符串所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。