[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

评分人数

    • tmplinshi: 感谢给帖子标题标注“[已解决]”字样PB + 2

本帖最后由 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
复制代码

TOP

2# tmplinshi
Thank you very much!
那要是截取最后出现的\之后的"bathome!.bat"呢?

TOP

本帖最后由 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 /? 的帮助中有这些用法的介绍。

TOP

4# tmplinshi

Thank you! 版主!
  1. for %%i in ("D:\winxp\i love bat\bathome!.bat") do echo %%~nxi
复制代码
用set也是同样的道理吗?

TOP

用set也是同样的道理吗?
指的是什么?

TOP

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

TOP

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
复制代码

TOP

8# tmplinshi
对,就是这样!暂时没有问题了。真的很感谢版主的热心解答!
I Love Batch as love my life!

TOP

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

TOP

返回列表