中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [请教]如何获取绝对路径中文件名的最后一部分?[已解决]
« [1] [2] »
作者:
标题: [请教]如何获取绝对路径中文件名的最后一部分?[已解决] 上一主题 | 下一主题
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 16 楼』:  


  namajm兄在F11中的代码是测试错误的代码还是正确的代码?
 
  我这里测试,没有通过,显示的是"ab",而不是我们想得到的"ab c",不知道咋回事。。


2006-10-21 02:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 17 楼』:  

  不好意思,我举的例子是想说明那段代码不能正确获取带空格路径中指定层次的文件夹名,当时没有注释清楚,现在已经注释好了。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-21 06:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 18 楼』:  

  14F的代码确实厉害,用到了比较生僻的shift,颇具技巧性,它可能是最具备通用性的了。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-21 06:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 19 楼』:  


  呵呵。。。

  我一直在思考这个问题:

  为什么在11楼的代码不行,而在14楼的代码却可行呢?难道就是这个shift起的作用?也没有明白为什么要循环4次。


2006-10-21 07:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 20 楼』:  

多看看 <帮助与支持>吧.
不一样的搭配就有不一样的味,这也是脚本存在的原因之一:
@echo off
setlocal ENABLEDELAYEDEXPANSION
    set str=c:\ab c\def\gh .exe\
    set num=1
    for /l %%i in (1,1,%num%) do set "str=!str:*\=!"
    echo %str:\= && 2>nul cd %
pause
把最后的cd换成echo就可以逐级显示.
几种方法使用的场合不同,至于孰好孰坏,那就是见仁见智了.

2006-10-21 07:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 21 楼』:  

  发现 echo %str:\= && 2>nul cd % 一句中,把cd换成任意的命令都能正确执行,对这一句去掉最后几个\分隔的内容的写法百思不得其解,还请3742668解说一二。

  另外,echo %str:\= && 2>nul cd %在提取其中的文件夹名的时候,最后一位是空格,在提取文件名的时候没有这个问题,换成 echo %str:\=&& 2>nul cd % 就可以了(注意:两条语句&&前一个有空格,一个没有空格)。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-21 08:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by 3742668 at 2006-10-21 07:35:
多看看 <帮助与支持>吧.
不一样的搭配就有不一样的味,这也是脚本存在的原因之一:
几种方法使用的场合不同,至于孰好孰坏,那就是见仁见智了.

同意, 解决问题的方法多种多样, 就看你怎么用了.

2006-10-21 08:43
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 23 楼』:  



  Quote:
Originally posted by namejm at 2006-10-21 08:39:
  发现 echo %str:\= && 2>nul cd % 一句中,把cd换成任意的命令都能正确执行,对这一句去掉最后几个\分隔的内容的写法百思不得其解,还请37426 ...

记得在那篇讨论加密解密的贴子里就有使用到过类似的方法.
原理很简单,例如:
set "command=set i=3"
echo i的值:%i% & pause
%command%
echo i的值:%i% & pause
参考:[原创][讨论]非编译型批处理加密方案与代码之11F方案。
另外其实最后一种方法还存在一点小问题,获得最后的文件名时可能显示出一行"ECHO 处于打开状态"之类的提示,为了节省代码量,没对它进行处理.

2006-10-21 09:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uemuem
初级用户




积分 153
发帖 68
注册 2006-10-12
来自 上海
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by 3742668 at 2006-10-21 09:00:

记得在那篇讨论加密解密的贴子里就有使用到过类似的方法.
原理很简单,例如:
[code]
set "command=set i=3"
echo i的值:%i% & pause
%command%
ech ...

经测试,确实会出现:“ECHO处于打开/关闭状态的提示”,不知道怎么样解决这个问题,经常会碰到这个问题。。。



个人主页-找餐厅:http://www.canting.cc
2006-10-24 03:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 25 楼』:  

  请问是在什么情况下出现“ECHO处于打开/关闭状态“的提示的?请把测试的路径发出来看一下。估计把 echo %str:\= && 2>nul cd % 修改成  echo. %str:\=&& 2>nul cd % 就可以了(注意:echo后有一个点号)。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-24 06:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
cl87388881
初级用户





积分 46
发帖 22
注册 2006-10-24
状态 离线
『第 26 楼』:  

好,强!值得学习~!

2006-10-24 21:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: