Board logo

标题: [文件操作] [已解决]批处理怎么使用set命令截取最后一次出现的字符呢? [打印本页]

作者: zfkzp    时间: 2011-6-23 16:12     标题: [已解决]批处理怎么使用set命令截取最后一次出现的字符呢?

  大家好,今天在学习set命令,看来论坛里面的好多例子也练习过来。就是有一个问题想问一下,截取最后一次出现的字符呢?
举例:,已知有如下路径:
  1. D:\winxp\i love bat\bathome!.bat
复制代码
要截取他的最后出现的\字符之前的路径,效果应该如下
  1. D:\winxp\i love bat\
复制代码
请问用set命令的话,代码给怎么写?
先在此谢过了,Thank you!

作者: tmplinshi    时间: 2011-6-23 16:34

本帖最后由 tmplinshi 于 2011-6-23 16:55 编辑
  1. @echo off
  2. for %%i in ("D:\winxp\i love bat\bathome!.bat") do echo %%~dpi
  3. pause
复制代码
  1. @echo off
  2. set str=D:\winxp\i love bat\bathome!.bat
  3. set str_temp=%str%
  4. for %%i in ("%str:\=" "%") do set end=%%~i
  5. setlocal enabledelayedexpansion
  6. echo !str_temp:%end%=!
  7. pause
复制代码

作者: zfkzp    时间: 2011-6-23 16:52

2# tmplinshi
Thank you very much!
那要是截取最后出现的\之后的"bathome!.bat"呢?
作者: tmplinshi    时间: 2011-6-23 16:56

本帖最后由 tmplinshi 于 2011-6-23 16:59 编辑
2# tmplinshi
Thank you very much!
那要是截取最后出现的\之后的"bathome!.bat"呢?
zfkzp 发表于 2011-6-23 16:52
  1. for %%i in ("D:\winxp\i love bat\bathome!.bat") do echo %%~nxi
复制代码
在 for /? 的帮助中有这些用法的介绍。
作者: zfkzp    时间: 2011-6-23 17:00

4# tmplinshi

Thank you! 版主!
  1. for %%i in ("D:\winxp\i love bat\bathome!.bat") do echo %%~nxi
复制代码
用set也是同样的道理吗?
作者: tmplinshi    时间: 2011-6-23 17:08

用set也是同样的道理吗?
指的是什么?
作者: zfkzp    时间: 2011-6-23 17:16

6# tmplinshi
刚才在看了一遍帖子,发现说错了。我的意思是楼主在2楼补充的那段,
  1. for %%i in ("%str:\=" "%") do set end=%%~i
复制代码
对应到截取\之后的bathome,应该也是相同的道理吧?
如果是的话,又应该改哪里呢?请版主提示即可,我自己会动手的。
作者: tmplinshi    时间: 2011-6-23 17:26

7# zfkzp


你的意思是用 2 楼第二段代码的方法,来截取 bathome!.bat 吗?
  1. @echo off
  2. set str=D:\winxp\i love bat\bathome!.bat
  3. for %%i in ("%str:\=" "%") do set end=%%~i
  4. echo %end%
  5. pause
复制代码

作者: zfkzp    时间: 2011-6-23 17:32

8# tmplinshi
对,就是这样!暂时没有问题了。真的很感谢版主的热心解答!
作者: applba    时间: 2011-6-23 19:20

这 不是 set的专用方法,在环境变量出现的任何地方都可以这样截取




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2