![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 11:44 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何获取路径最后一个"\"后的字串[完美解决] |
| 可打印版本 2,616 / 25 |
| 第1楼 HUNRYBECKY | 发表于 2007-02-13 02:45 |
| 银牌会员 发帖 442 积分 1,179 | |
|
如何获取路径最后一个"\"后的字串[完美解决] 已解决,见http://www.cn-dos.net/forum/viewthread.php?tid=27658&page=1&sid=FB2nu4#pid174202 贴2楼ZH159兄的回答.
下面是我的代码,请修改 其中PurgeS.SVE中的内容如下: 大家应该看明白了我这段代码的意思,我是使用RAR程序把PurgeS.SVE指定中指定的文件夹下的所有文件压缩备份到当前的BACKUP目录下,但是运行到有子目录的SYSTEM32\dllcache时则出现错误,提示找不到压缩文件要备份的路径,因为我是想不区分有无子目录一切都直接备份到BACKUP目录,而且并以目录的最后一个子目录的名称来确定压缩文件的名称,如SYSTEM32\dllcache备份后压缩文件应该是dllcache.rar 而且必须位于BACKUP目录下 希望大家给我一个解决的思路或代码,要求使用批处理,不使用VBS,运行环境为WINXP,谢谢. 有关RAR命令,我刚才把自己的学习笔记发到http://www.cn-dos.net/forum/viewthread.php?tid=27657&sid=FB2nu4 ,可以参考. 17楼出现新的问题,在线等待高手们的再次回答 [ Last edited by HUNRYBECKY on 2007-2-14 at 03:09 AM ] |
|
| 第2楼 slore | 发表于 2007-02-13 02:49 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
dim Str1,Pos
Str1="C:\WINDOWS\IME\CINTLGNT" Pos=InstrRev(Str1,"\") msgbox mid(Str1,Pos+1,len(Str1)-Pos) |
|
| 第3楼 HUNRYBECKY | 发表于 2007-02-13 02:58 |
| 银牌会员 发帖 442 积分 1,179 | |
Originally posted by slore at 2007-2-13 02:49: 谢谢回答,我想使用批处理,不使用VBS |
|
| 第4楼 vkill | 发表于 2007-02-13 03:00 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
for /f "tokens=*" %? in ('dir /ad/b c:\') do (echo %?|sed -r "s/.*\\([^\]*)$/\1/")
|
|
| 第5楼 redtek | 发表于 2007-02-13 03:01 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
获取路径最后一个"\"后的字串原理:)
FOR /?
|
|
| 第6楼 HUNRYBECKY | 发表于 2007-02-13 03:09 |
| 银牌会员 发帖 442 积分 1,179 | |
Originally posted by vkill at 2007-2-13 03:00: 我不想使用SED这个东西,谢谢VKILL兄弟的回答,有其他方法吗? |
|
| 第7楼 HUNRYBECKY | 发表于 2007-02-13 03:15 |
| 银牌会员 发帖 442 积分 1,179 | |
Originally posted by redtek at 2007-2-13 03:01: 谢谢REDTEK兄的回答,但是我如下使用,好象不对,能否修改下. |
|
| 第8楼 slore | 发表于 2007-02-13 03:28 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
@echo off
FOR /F "EOL=;DELIMS=" %%I in (PurgeS.SVE) DO ( ECHO 正在压缩备份%windir%\%%I\下的文件,请稍等...... PING 127.0.0.1 -n %TIMEOUT% >NUL for /F "tokens=2 DELIMS=\" %%J IN ("%%I") do echo ".\BACKUP\%%J" "%windir%\%%I" echo ".\BACKUP\%%I" "%windir%\%%I" ) PAUSE |
|
| 第9楼 HUNRYBECKY | 发表于 2007-02-13 03:50 |
| 银牌会员 发帖 442 积分 1,179 | |
Originally posted by slore at 2007-2-13 03:28: 再次谢谢兄的回答,不过因为路径的层数不是固定的,所以使用你的这个方法还是不行,你这个DELIMES=2只有2层,如果是3层,4层呢? 再说明下我获取以\的目录的最后的名称的原因在于我便于使用RAR命令重新恢复,如我备份了所有项目,那么可以让用户选择要恢复的内容,如日文输入法,韩文输入法,MS拼音输入法等,如果整体直接压缩到一个或某个包内,恢复时使用RAR命令是很不方便的 [ Last edited by HUNRYBECKY on 2007-2-13 at 03:53 AM ] |
|
| 第10楼 HUNRYBECKY | 发表于 2007-02-13 04:03 |
| 银牌会员 发帖 442 积分 1,179 | |
|
依然在线等待..................期待高手们的回答.
|
|
| 第11楼 HUNRYBECKY | 发表于 2007-02-13 04:20 |
| 银牌会员 发帖 442 积分 1,179 | |
|
[在线求助]如何处理这样的路径字符串[已结] ─────────────────── 版务记录 ──────────────────── 执行:namejm 说明:{tid=27658}与本主题存在上下文关系,合并到本主题下。 处罚:因该用户在论坛里并非新人,理应对本论坛的发帖规定有所了解,故扣除 该用户发帖所得的4点积分。 ─────────────────── 版务记录 ──────────────────── C:\WINDOWS\system32 C:\WINDOWS\SHELLNEW C:\WINDOWS\system32\dhcp C:\WINDOWS\system32\dllcache C:\WINDOWS\Help\Tours\mmTour C:\WINDOWS\Help\Tours\WindowsMediaPlayer C:\WINDOWS\ime\CHSIME C:\WINDOWS\ime\SHARED 上面这些路径中,我只想获取路径中最后一个\的内容,如得到的结果如下 system32 SHELLNEW dhcp dllcache mmTour WindowsMediaPlayer CHSIME SHARED 请求高手们给点意见,要求不使用第三方工具,不使用VBS脚本 [ Last edited by namejm on 2007-2-12 at 04:46 PM ] |
|
| 第12楼 zh159 | 发表于 2007-02-13 04:42 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
list.txt
|
|
| 第13楼 HUNRYBECKY | 发表于 2007-02-13 05:08 |
| 银牌会员 发帖 442 积分 1,179 | |
|
非常感谢zh159兄对我的问题多次回答,得向你好好学习.
刚才redtek兄也回答了我这个问题,本人因为对FOR语句实在用的不熟悉,所以还是没有明白redtek兄的意思,我居然当作SET的变量来处理,搞成%%I:%~nI,所以怎么搞都不出来. 再次非常感谢兄的回答. |
|
| 第14楼 slore | 发表于 2007-02-13 05:16 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
同时感谢~
对bat里的for还差好多呀.. |
|
| 第15楼 vkill | 发表于 2007-02-13 06:03 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
哎,竟然忘记了用%~ni
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |