bat中如何从文件中截取字符串,并将次字符串作为参数传出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat中如何从文件中截取字符串,并将次字符串作为参数传出相关的知识,希望对你有一定的参考价值。

我需要将file.txt中第一行的012WEV147Y000586和第二行中012VEW147S000304分别命名为SN1和SN2,并在 传给start \...\123.bat %sn1% 和start \...\123.bat %sn2%。请高手帮忙解决,谢谢
以下为file.txt中的内容
List of devices attached
012WEV147Y000586 device
012VEW147S000304 device

参考技术A 截取字符串可以说是字符串处理功能中最常用的一个子功能:
@echo off

set ifo=abcdefghijklmnopqrstuvwxyz0123456789

echo 原字符串(第二行为各字符的序号):

echo %ifo%

echo 123456789012345678901234567890123456

echo 截取前5个字符:

echo %ifo:~0,5%

echo 截取最后5个字符:

echo %ifo:~-5%

echo 截取第一个到倒数第6个字符:

echo %ifo:~0,-5%

echo 从第4个字符开始,截取5个字符:

echo %ifo:~3,5%

echo 从倒数第14个字符开始,截取5个字符:

echo %ifo:~-14,5%

pause

取得的字符串的应用,如:替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串

@echo off

set aa=伟大的中国!我为你自豪!

echo 替换前:%aa%

echo 替换后:%aa:中国=中华人民共和国%

echo aa = %aa%

set "aa=%aa:中国=中华人民共和国%"

echo aa = %aa%

pause
参考技术B @Echo Off
(For /L %%a In (1 1 2) Do Set /P SN%%a=)<file.txt
Start \\...\\123.bat "%SN1%"
Start \\...\\123.bat "%SN2%"

是否符合要求?

追问

这个还是没有把SN传给"%SN1%"和"%SN2%",不过麻烦您帮忙解释一下
(For /L %%a In (1 1 2) Do Set /P SN%%a=)<file.txt
谢谢!

追答

额,这倒是有点奇怪,那句的意思简单点说就是从file.txt中读取前两行数据分别赋值给SN1和SN2

如何截取两个字符之间的字符串

截取两个字符之间的字符串有两种方法:
1.slice(start,[end])
该方法返回一个新数组,包含了源函数从start到 end 所指定的元素,但是不包括end元素。
如果 start 为负,将它作为 length + start处理,此处 length 为数组的长度。
如果 end 为负,就将它作为 length + end 处理,此处 length 为数组的长度。
如果省略 end ,那么 slice 方法将一直复制到源数组结尾。
如果 end 出现在 start 之前,不复制任何元素到新数组中。

2.subString(start,[end])
该方法返回一个新数组,包含了源函数从start到 end 所指定的元素,但是不包括end元素。
如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
如果 start 或 end 为负数,那么它将被替换为 0。
参考技术A 如果两个特殊字符是一样的话,那就好办了噻。直接用string的split函数就可以的。就可以得到三个字符串的,其中第二个字符串就是你要得到的字符串的。。
如果两个特殊字符是不一样的话,那就你可以先获取第一个特殊字符的split函数进行分解的,然后再分解第二个特殊字符的split函数的,得到的第一个字符串就是你要的字符串。

以上是关于bat中如何从文件中截取字符串,并将次字符串作为参数传出的主要内容,如果未能解决你的问题,请参考以下文章

bat创建以当前日期命名的文件夹

BAT批处理中的字符串处理详解(字符串截取)

XCTEST - 如何从屏幕截图中提取文本并将其与预期字符串进行比较

bat自动创建文件夹(以当前时间命名)

如何截取两个字符之间的字符串

如何从 c# 文件中获取带有退出代码的字符串消息以提供运行它的 .bat 文件