中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何解决DOS批处理中替换字符的字母大小写问题
作者:
标题: 如何解决DOS批处理中替换字符的字母大小写问题 取消高亮 | 上一主题 | 下一主题
sparkl
新手上路





积分 12
发帖 5
注册 2008-6-2
状态 离线
『楼 主』:  如何解决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也被替换了.希望有高手指点.....感激不尽

2008-6-2 15:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

貌似没有解决办法。

   此帖被 +1 点积分    点击查看详情   
评分人:【 sparkl 分数: +1  时间:2008-6-3 02:34




偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-2 16:39
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 3 楼』:  

介绍一下 4DOS / 4NT / Take Command 的 @replace 变量函数

  Quote:
@REPLACE[string1, string2, text]:  Replaces all occurrences of string1 in the text string with string2. For example, %@replace[w,ch,warming] returns the string "charming".

The search is case sensitive.

Examples:

echo %@replace[\,/,"ftp:\\server\etc"]

echo %@replace[%=,,,A better, command processor]





DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-6-3 00:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sparkl
新手上路





积分 12
发帖 5
注册 2008-6-2
状态 离线
『第 4 楼』:  感谢2,3楼

楼上是不是要我下个系统增强DOS,---->4NT软件啊?
看来XP自带的DOS是完成不了以上任务了........

2008-6-3 02:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 5 楼』:  

给你纠正一个概念:WindowsXP 下不存在所谓的自带的 DOS



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-6-3 03:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 6 楼』:  

DOSforever兄,貌似4dos/4nt又有了新版本,那就是Take Command,而且依然是商业软件,兄给推荐一下,用哪个版本比较适合?

其实,我以前下载过很多这个东西,但一直没有真正的用过。

最主要的问题,它不完全是一个第三方程序,而是一个第三方的环境,相当于完全不同的shell,它无法无缝的集成到自己的批处理中,需要时调用,不需要时退出。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-3 07:44
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 7 楼』:  

哦,是这样的,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 楼』:

  Quote:
4DOS与传统的COMMAND.COM相比变化确实很大,但它并不是改变了COMMAND.COM原有的语法和参数,而是在它的基础上加以扩充,你也可以完全按照使用COMMAND.COM的习惯来使用它,原来在COMMAND.COM下编写的BATCH可以不加任何修改地在4DOS下运行,但这样一来两者就没有什么区别了,完全不能发挥4DOS的优势和特点。

与此类似,你在 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

  Quote:
2. Is Take Command completely compatible with the standard Windows CMD.EXE?

    * It's impossible to be 100% compatible with CMD.EXE, because
          o (1) Take Command has several thousand additional features, and
          o (2) CMD.EXE itself is incompatible with other versions of CMD.EXE.
    * We strive for 99.9% compatibility (generally more than CMD.EXE manages with itself!) .
    * There are always workarounds for the rare situation where Take Command doesn't execute a batch file in an identical way.
    * The best answer would be to download a 30-day fully functional trial of 4NT and test it in your own environment.





DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-6-3 13:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sparkl
新手上路





积分 12
发帖 5
注册 2008-6-2
状态 离线
『第 8 楼』:  烂砖一抛,引出无数金镶玉

非常感谢DOSforever和Climbing的分析.偶现也下了一个8.02版的,但是看帮助都是英语,没办法,只能强啃了,不知道百度上有没有汉化了的帮助

2008-6-3 14:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: