中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 17:38
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [请教]如何获取绝对路径中文件名的最后一部分?[已解决]
可打印版本  6,785 / 25
第16楼 lxmxn 发表于 2006-10-21 02:54
版主 发帖 4,938 积分 11,386

  namajm兄在F11中的代码是测试错误的代码还是正确的代码?
 
  我这里测试,没有通过,显示的是"ab",而不是我们想得到的"ab c",不知道咋回事。。
第17楼 namejm 发表于 2006-10-21 06:15
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  不好意思,我举的例子是想说明那段代码不能正确获取带空格路径中指定层次的文件夹名,当时没有注释清楚,现在已经注释好了。
第18楼 namejm 发表于 2006-10-21 06:17
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  14F的代码确实厉害,用到了比较生僻的shift,颇具技巧性,它可能是最具备通用性的了。
第19楼 lxmxn 发表于 2006-10-21 07:03
版主 发帖 4,938 积分 11,386

  呵呵。。。

  我一直在思考这个问题:

  为什么在11楼的代码不行,而在14楼的代码却可行呢?难道就是这个shift起的作用?也没有明白为什么要循环4次。
第20楼 3742668 发表于 2006-10-21 07:35
荣誉版主 发帖 718 积分 2,013
多看看 <帮助与支持>吧.
不一样的搭配就有不一样的味,这也是脚本存在的原因之一:

把最后的cd换成echo就可以逐级显示.
几种方法使用的场合不同,至于孰好孰坏,那就是见仁见智了.
第21楼 namejm 发表于 2006-10-21 08:39
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  发现 echo %str:\= && 2>nul cd % 一句中,把cd换成任意的命令都能正确执行,对这一句去掉最后几个\分隔的内容的写法百思不得其解,还请3742668解说一二。

  另外,echo %str:\= && 2>nul cd %在提取其中的文件夹名的时候,最后一位是空格,在提取文件名的时候没有这个问题,换成 echo %str:\=&& 2>nul cd % 就可以了(注意:两条语句&&前一个有空格,一个没有空格)。
第22楼 pengfei 发表于 2006-10-21 08:43
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
Originally posted by 3742668 at 2006-10-21 07:35:
多看看 <帮助与支持>吧.
不一样的搭配就有不一样的味,这也是脚本存在的原因之一:
几种方法使用的场合不同,至于孰好孰坏,那就是见仁见智了.


同意, 解决问题的方法多种多样, 就看你怎么用了.
第23楼 3742668 发表于 2006-10-21 09:00
荣誉版主 发帖 718 积分 2,013
Originally posted by namejm at 2006-10-21 08:39:
  发现 echo %str:\= && 2>nul cd % 一句中,把cd换成任意的命令都能正确执行,对这一句去掉最后几个\分隔的内容的写法百思不得其解,还请37426 ...

记得在那篇讨论加密解密的贴子里就有使用到过类似的方法.
原理很简单,例如:

参考:非编译型批处理加密方案与代码之11F方案。
另外其实最后一种方法还存在一点小问题,获得最后的文件名时可能显示出一行"ECHO 处于打开状态"之类的提示,为了节省代码量,没对它进行处理.
第24楼 uemuem 发表于 2006-10-24 03:32
初级用户 发帖 68 积分 153 来自 上海
Originally posted by 3742668 at 2006-10-21 09:00:

记得在那篇讨论加密解密的贴子里就有使用到过类似的方法.
原理很简单,例如:
第25楼 namejm 发表于 2006-10-24 06:39
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  请问是在什么情况下出现“ECHO处于打开/关闭状态“的提示的?请把测试的路径发出来看一下。估计把 echo %str:\= && 2>nul cd % 修改成 echo. %str:\=&& 2>nul cd % 就可以了(注意:echo后有一个点号)。
第26楼 cl87388881 发表于 2006-10-24 21:58
初级用户 发帖 22 积分 46
好,强!值得学习~!
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023