![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 22:11 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何解决DOS批处理中替换字符的字母大小写问题 |
| 可打印版本 2,244 / 7 |
| 第1楼 sparkl | 发表于 2008-06-02 15:00 |
| 新手上路 发帖 5 积分 12 | |
|
如何解决DOS批处理中替换字符的字母大小写问题 假设存在C:\test文件夹,下面有很多TXT文件,就算100个吧,有的文件名还有空格,
如1.txt 2.txt 3.txt 3 0 0.txt 等等,现在要把这些文档文件里面的内容 A 替换成 B 经过处理可以当加密用,或者如果B是空的,那就是删除A, 代码如下: @echo off setlocal enabledelayedexpansion set file=c:\test :文件目录 set TYPEFILE=*.txt :文件类型 set /p BEF=输入您须要替换前的字符,按回车结束. :设置变量BEF set /p AFT=输入您须要替换后的字符,按回车结束. :设置变量 set TEMPFILE=%random%.tmp :建立一个随机的临时文件 cls echo. echo ------------Made by Sparklt %date% %time% ------------ echo. echo 您输入的 %BEF% 将会替换成 %AFT% echo. echo. echo. echo. 正在替换.... for /r %file% %%i in (%TYPEFILE%) do ( if exist %TEMPFILE% (del /f /q %TEMPFILE%) for /f "usebackq tokens=*" %%j in ("%%i") do ( set TEM=%%j echo !TEM:%BEF%=%AFT%! >>%TEMPFILE% ) move /y %TEMPFILE% "%%i" ) echo. echo 替换完成 pause endlocal 存在缺陷是替换的字母不分大小写,比如替换的是a,可是文件里面的A也被替换了.希望有高手指点.....感激不尽 |
|
| 第2楼 Climbing | 发表于 2008-06-02 16:39 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
貌似没有解决办法。
|
|
| 第3楼 DOSforever | 发表于 2008-06-03 00:16 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
介绍一下 4DOS / 4NT / Take Command 的 @replace 变量函数
|
|
| 第4楼 sparkl | 发表于 2008-06-03 02:33 |
| 新手上路 发帖 5 积分 12 | |
|
感谢2,3楼 楼上是不是要我下个系统增强DOS,---->4NT软件啊?
看来XP自带的DOS是完成不了以上任务了........ |
|
| 第5楼 DOSforever | 发表于 2008-06-03 03:18 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
给你纠正一个概念:WindowsXP 下不存在所谓的自带的 DOS
|
|
| 第6楼 Climbing | 发表于 2008-06-03 07:44 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
DOSforever兄,貌似4dos/4nt又有了新版本,那就是Take Command,而且依然是商业软件,兄给推荐一下,用哪个版本比较适合?
其实,我以前下载过很多这个东西,但一直没有真正的用过。 最主要的问题,它不完全是一个第三方程序,而是一个第三方的环境,相当于完全不同的shell,它无法无缝的集成到自己的批处理中,需要时调用,不需要时退出。 |
|
| 第7楼 DOSforever | 发表于 2008-06-03 13:21 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
哦,是这样的,Take Command 不叫 4DOS / 4NT 的新版本,确切的倒应该说是 4NT / Take Command 是 4DOS 在 Windows 下的继承和延续和扩展。4NT 和 Take Command 是当时在 Windows 下同时并列推出的,从语句使用上来说基本没什么区别,只不过界面上一个和 CMD 一样是字符形式,另一个更加图形化一些(有点象在文本编辑器中写字一样)。
前一段时间 JP Software 推出的新版本有些混乱,在原有保持 4NT / Take Command 的情况下推出了一个新产品:TCI (Tabbed Console Interface),它是在一个窗口下能够开多个命令行标签窗口,就像在多标签浏览器中浏览多个网页一样。但它默认开的还是 CMD 标签窗口,无法使用 JPSoft 丰富的命令行语法。当然也可以进入后再加载 4NT ,就像 4DOS 在 COMMAND 下作为第二层 shell 加载一样。所以我个人不大喜欢这个产品。果然,JP Software 可能也认为这个产品的意义不大,在推出到最后的 2.01 版后就不再继续了。从目前 JP Software 官方网站的介绍来看,它打算是把所有的产品最后都集成到 Take Command 9.0 中,再在此基础上推出两种简化版。从界面上看 Take Command 9.0 和以前的版本有很大的不同,就像把命令行窗口集成到资源管理器中去了,而且可以开多个 Take Command Console 窗口,而不是 CMD 窗口 。可以说 Take Command 9.0 是 JP Software 所有命令行产品的大集成,差不多可以说是终极产品了。 由于目前我还没找到 Take Command 9.0 的破解,所以只能解一下眼馋,目睹一下它的芳容,呵呵呵呵。 目前我使用的是 4NT / Take Command 的 8.02 版,其实就我们普通使用来说版本高低也无所谓,用了高版本也只不过是心理安慰而已,呵呵。另外,Unicode 版的 4NT / Take Command 在重定向处理汉字字符时有问题,这个问题我至今还没完全解决: http://www.cn-dos.net/forum/viewthread.php?tid=37992 本来我想和 wl00560 继续讨论这问题的,但有个例子忘了,所以只能暂时搁置起来,等以后遇到再继续讨论。 所以,我至今还保留了一份 4NT 6.01 ASCII 版,以便 8.02 版不能处理时让 6.01 处理。 至于 free 版的 TCC LE 9.0 各项特性怎么样,我还没怎么用过,所以不得而知。 说到 4NT / Take Command 的使用,确实如你所说的完全是另一个环境,但是这个环境是兼容 CMD 的,就像 4DOS 是兼容 COMMAND 一样。我以前和你谈到过这问题: http://www.cn-dos.net/forum/viewthread.php?tid=15214『第 6 楼』:
与此类似,你在 CMD 下编写的 batch 也可以不加修改的在 4NT / Take Command 下运行,但是你不能把 4NT / Take Command 当作 wbat 那样“需要时调用,不需要时退出”。也就是说,你用 4NT / Take Command 语法来编写的 batch 就只能在它环境下运行。其实这个问题并不麻烦,也很好解决。如果你的 batch 就是应用于 CMD 环境下的,那就命名为 .bat 或 .cmd 文件,如果是应用于 4NT / Take Command 环境下的,那就命名为 .btm 文件, 4NT / Take Command 安装时会问你是否要关联 .btm 文件。 有一点要说明的是 4NT / Take Command 相对于 CMD 的兼容比 4DOS 相对于 COMMMAND 的兼容要稍微差那么一点点。不过我是没遇到过。但是这又不能全怪 4NT / Take Command ,请看 JP Software 自己的“辩解”: http://www.jpsoft.com/ConsoleFAQs.htm
|
|
| 第8楼 sparkl | 发表于 2008-06-03 14:44 |
| 新手上路 发帖 5 积分 12 | |
|
烂砖一抛,引出无数金镶玉 非常感谢DOSforever和Climbing的分析.偶现也下了一个8.02版的,但是看帮助都是英语,没办法,只能强啃了,不知道百度上有没有汉化了的帮助
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |