bat 字符串截取操作

■前言

从固定格式的文件名中,提取字符串。

得到的文件名中包含目录,

C:\XXX\XXX\XX\aaa_bbb_ccc0001_xx.xxx

C:\XXX\XXX\XX\aaa_bbb_ccc0002_xx.xxx

因为前面的目录有变化的可能,而后面的文件是固定的,

所以想从,倒数某一位开始,提取固定的位数。

从而得到

ccc0001

ccc0002

 

■解决

从倒数第14位开始截取7位:%str:~-14,7%

 

■代码扩展

chcp 65001
@echo off
set str1=12345_67890_ABC
echo %str1%
echo================
echo 截取前5位:%str1:~0,5%
echo 截取最后3位:%str1:~-3%
echo 从倒数第9位开始截取5位:%str1:~-9,5%
echo (以上,是我这次需要的代码)
echo================
echo 截取第一位开始,舍去最后的4位:%str1:~0,-4%
echo 从第7个字符开始截取5位:%str1:~6,5%

pause

■执行效果

Active code page: 65001
12345_67890_ABC
===============
截取前5位:12345
截取最后3位:ABC
从倒数第9位开始截取5位:67890
(以上,是我这次需要的代码)
===============
截取第一位开始,舍去最后的4位:12345_67890
从第7个字符开始截取5位:67890
Press any key to continue . . .    

----

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 以下是一个使用 BAT 脚本实现 16 进制转 ASCII 码的代码示例: ``` @echo off set /p hex=请输入16进制字符串: for /l %%i in (0,1,%hex:~0,-2%) do ( set /p hexcode=<nul for /f "tokens=2 delims=0" %%j in ('echo:^|debug ^|find "0x%%hex:~%%i,2"' ) do set hexcode=%%j echo %hexcode% ) pause ``` 使用方法: 1. 将代码保存为 .bat 文件。 2. 双击该文件运行脚本。 3. 输入 16 进制字符串。 4. 脚本将输出 ASCII 码。 ### 回答2: 在BAT脚本中,我们可以通过将16进制的字符串转换为ASCII码来实现这个功能。下面是实现这个功能的BAT脚本代码: ```bat @echo off setlocal enableDelayedExpansion set "hexInput=" set /p hexInput=请输入16进制字符串: set "asciiOutput=" for /L %%i in (0, 2, 31) do ( set "hex=%hexInput:~%%i,2%" if defined hex ( set /a "dec=0x!hex!" set "asciiOutput=!asciiOutput!!ascii!" ) ) echo ASCII码结果:%asciiOutput% ``` 以上脚本中,首先我们使用`set /p`指令来询问用户输入一个16进制字符串。接着使用一个循环来逐个提取每两个字符,并使用`set /a`指令将其转换为十进制值。然后,我们将转换得到的ASCII字符累加到`asciiOutput`变量中。最后,使用`echo`指令将转换后的ASCII码结果输出给用户。 请注意,此脚本中并未进行对用户输入的合法性验证,因此如果用户输入的字符串格式有误,则结果可能不准确。为了保证结果准确性,建议对用户输入进行合法性验证或对程序进行进一步的错误处理。 ### 回答3: 下面是一个使用BAT脚本写的将16进制转换为ASCII码的代码: @echo off setlocal enabledelayedexpansion set /p hex_input=请输入16进制数: set hex=!hex_input! set hex_length=0 set /a ascii_length=0 :calculate_length if not "!hex:~%hex_length%,1!"=="" ( set /a hex_length+=1 goto:calculate_length ) set /a ascii_length=!hex_length!/2 set /a start_index=0 set /a end_index=1 set ascii="" :convert_hex_to_ascii if %start_index% lss %ascii_length% ( set hex_byte=!hex:~%start_index%,%end_index%! set /a decimal=!hex_byte! & 0xFF set "ascii=!ascii!!ascii:~%decimal%,1!" set /a start_index+=2 goto:convert_hex_to_ascii ) echo 转换后的ASCII码为: %ascii% endlocal ``` 首先,使用`set /p`命令提示用户输入一个16进制数。然后,从输入的16进制数中获取长度,并计算出ASCII码的长度。之后,循环遍历16进制数的每一位,在每一步中,将2位16进制数转换为10进制数并使用`set /a`命令与0xFF进行与运算,实现了取低8位的目的,然后将得到的10进制数转换为对应的ASCII字符。最后,输出转换后的ASCII码字符串。 此代码可以通过输入16进制数来将其转换为ASCII码,并将结果打印出来。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值