无忧启动论坛

标题: 如何实现批处理获取字符串中最后一个空格后的所有字符 [打印本页]

作者: yjqd    时间: 2021-7-15 14:56
标题: 如何实现批处理获取字符串中最后一个空格后的所有字符


如何实现批处理获取字符串中最后一个空格后的所有字符

比如字符串  ab cd ef klol
批处理容易实现:以空格为分隔符,可分成4组字符串

如果字符串以空格为分隔成的组数是不确定的,批处理如何实现获取字符串中最后一个空格后的所有字符


作者: admin041120    时间: 2021-7-15 15:15
11111
作者: plusv    时间: 2021-7-15 15:47
测试 : Windows 7 X64.

1. 由 参数
1. 由 字符串





a.rar

270 Bytes, 下载次数: 16, 下载积分: 无忧币 -2


作者: gailium    时间: 2021-7-15 15:47
可以用c++吗
作者: nttwqz    时间: 2021-7-15 16:20
有个简单的写法,多少列就相等于变量赋值了多少次,取最后的值。
由于for和set的执行效率高,所以即使是3~4万字,1万列,也不过耗时半秒钟而已(以每列内容aaa来测试)。

for /d %a in (a b c d) do set var=%a
作者: dos时代菜鸟    时间: 2021-7-17 22:50
本帖最后由 dos时代菜鸟 于 2021-7-17 23:38 编辑

这就是 传说中 获取 某行文字中某个单词的 古老命题。
最后一个 ,属于特例,容易些,否则就需要做个 计数器。




  1. @echo off

  2. rem 获取某字符串特定位置单词内容,第一个参数为 位置,以后为字符串内容
  3. rem 如: strings-1  5  ab cd ef gh ij kl mn ,将得到 ij
  4. rem      strings-1  -1 ab cd ef gh ij kl mn ,将得到 mn

  5. setlocal EnableDelayedExpansion

  6. call :n_str %*
  7. if %1 gtr 0 (set /a x=%1)
  8. if %1 lss 0 (set /a x=!n!+%1+1)
  9. for /l %%c in (1,1,!n!) do (
  10.         if !x! equ %%c echo %1 = [!str%%c!]
  11. )

  12. pause
  13. goto:eof


  14. :n_str
  15.         set n=0
  16.         :loop
  17.                 if not "%~2"=="" (
  18.                         set /a n=!n!+1
  19.                         set str!n!=%2
  20.                         shift /2
  21.                         goto loop
  22.                 )
  23. exit /b
复制代码








欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3