DOS截取字符串的方法_DOS/BAT

为了说明截取变量中字符串的问题曾经举过如下这个例子:

复制代码 代码如下:

@echo off
set str=123456789
echo 第一个字符为:%str:~0,1%
echo 头两个字符为:%str:~0,2%
echo 头5个字符为:%str:~0,5%
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
echo 第4个字符为:%str:~3,1%
echo 第4个及其之后的3个字符为:%str:~3,4%
echo 最后一个字符为:%str:~-1%
echo 最后一个字符为:%str:~-1,1%
echo 最后一个字符为:%str:~-1,2%
echo 倒数第4个字符为:%str:~-4,1%
echo 倒数第4个及其之后的字符为:%str:~-4%
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
pause

为了说明这个问题,我在这里把批处理取字符,做下进一步的解释,希望对新手有所启发
如下:
echo %var:~n,k%
我们在这里对每个参数做个说明:"%var",即我们要从中要截取字符的字符串." ~ "取字
符标志符(我是这么理解的),"n" 我们将其理解为指针,"k"我们将其理解为偏移地址.(注
:指针和偏移地址都是从零开始数的)
我们还是用namejm版主的例子做下说明:

复制代码 代码如下:

@echo off
set str=123456789
rem 定义一个str字符串为123456789
echo 第一个字符为:%str:~0,1%
rem 指针为0,偏移地址为1,即从第0位开始,取1位
echo 头两个字符为:%str:~0,2%
rem 指针为0,偏移地址为2,即从第0位开始,取2位
echo 头5个字符为:%str:~0,5%
rem   指针为0,偏移地址为5,即从第0位开始,取5位
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
rem 当"k"为负值时,我们可以这样理解:从指针开始处开始取其后面所有字符,然后减去后面"abs(k)位"..所以这个句字我们可以做如下解释:从第0位开始取其全部字符
为:123456789然后从后面减去abs(k)位,所以最后结果为:12345678
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
rem   该句解释同上↑
echo 最后一个字符为:%str:~-1%
rem   参数"n,"和"k"都可以为缺省,缺省"n,"时可以理解为:从abs(k)位开始取其全部
echo 倒数第4个及其之后的字符为:%str:~-4%
rem         解释同上↑
echo 最后一个字符为:%str:~-1,1%
rem   n为负值时,表示从后面开始截取字符,取k位(此时n应从1开始数)
echo 最后一个字符为:%str:~-1,2%
rem   解释同上↑
echo 倒数第4个字符为:%str:~-4,1%
rem   解释同上↑
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
rem   解释同上↑
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
rem 解释同上↑
pause

时间: 2024-08-01 14:36:57

DOS截取字符串的方法_DOS/BAT的相关文章

DOS截取字符串的方法

关于DOS(windows命令行)截取变量中字符串问题的详细说明,需要的朋友可以参考下   为了说明截取变量中字符串的问题曾经举过如下这个例子: 复制代码 代码如下: @echo off set str=123456789 echo 第一个字符为:%str:~0,1% echo 头两个字符为:%str:~0,2% echo 头5个字符为:%str:~0,5% echo 去掉最后一个字符后的字符串为:%str:~0,-1% echo 去掉最后3个字符后的字符串为:%str:~0,-3% echo

DOS下联网的方法_DOS/BAT

    随着计算机和网络的普及,计算机之间的联网操作(如文件的传输,聊天等)以及Internet网络显得越来越重要了.既然DOS有这么多的用户,那么如何 用它来实现联网呢?DR-DOS 7.xx和ROM-DOS 7.xx中自带联网(包括局域网和TCP/IP协议等)的功能,可是我们大家常用的MS-DOS却没有.但是,并不是没有办法,只是需要一些附加的软件. 比较好的有Netware Lite 1.x和Microsoft Network Client 3.0等(均可在本站的"网络工具"中下

研究下DOS下联网的方法_DOS/BAT

随着计算机和网络的普及,计算机之间的联网操作(如文件的传输,聊天等)以及Internet网络显得越来越重要了.既然DOS有这么多的用户,那么如何 用它来实现联网呢?DR-DOS 7.xx和ROM-DOS 7.xx中自带联网(包括局域网和TCP/IP协议等)的功能,可是我们大家常用的MS-DOS却没有.但是,并不是没有办法,只是需要一些附加的软件. 比较好的有Netware Lite 1.x和Microsoft Network Client 3.0等(均可在本站的"网络工具"中下载),下

删除DOS结尾符的方法_DOS/BAT

DOS结尾符:CRLF Carriage-Return Line-Feed   # 检查文件是否含有CRLF  1. file dosfile     返回CRLF  2. cat -a dosfile     返回^M    # 删除CRLF  1. vim            :set fileformat=unix  # :set ff=unix      :w        :s/^M//gc  # Linux: Ctrl+V+M Enter, AIX: Ctrl+V Ctrl+^ E

Java截取字符串的方法

  本文实例讲述了Java截取字符串的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 public static void main(String args[]) { //以该字符第一次出现,开始截取 //String str="abc.def"; //String str="abc.def.sdfsdf.fsdfd.ddddd.ggggg.ttttt"; //String str1=str.subst

Jquery循环截取字符串的方法(多出的字符串处理成"...")_jquery

如下所示: $('a[rev="title"]').each(function () { var u = $.trim($(this).html()); $(this).html(SetSub(u, 10)) }); SetSub相当于substr 以上这篇Jquery循环截取字符串的方法(多出的字符串处理成"...")就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目

php按单词截取字符串的方法_php技巧

本文实例讲述了php按单词截取字符串的方法.分享给大家供大家参考.具体分析如下: 这里指定字符串和单词数量进行截取 复制代码 代码如下: <?php function limit_words($string, $word_limit) {     $words = explode(" ",$string);     return implode(" ",array_splice($words,0,$word_limit)); } //Example Usage

go语言按显示长度截取字符串的方法_Golang

本文实例讲述了go语言按显示长度截取字符串的方法.分享给大家供大家参考.具体分析如下: 根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数. 这两天在折腾golang,所以就用golang重写了着连个函数.代码如下: 复制代码 代码如下: package main import (     "fmt" ) func main() {     fmt.Println(show_st

正则表达式截取字符串的方法技巧_正则表达式

有这么一段字符串: [数字]字符串 结果 取  a=数字      b=字符串 截取方法1: int a = Convert.ToInt32(txt1.Text.Trim().Replace('[', ']').Split(']')[1]); string b = txt1.Text.Trim().Replace('[', ']').Split(']')[2]; 截取方法2: string str = "[数字]字符串"; Regex reg = new Regex(@" (