|
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 楼』:
貌似没有解决办法。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2008-6-2 16:39 |
|
|
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
状态 离线
|
|
2008-6-3 03:18 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
6 楼』:
DOSforever兄,貌似4dos/4nt又有了新版本,那就是Take Command,而且依然是商业软件,兄给推荐一下,用哪个版本比较适合?
其实,我以前下载过很多这个东西,但一直没有真正的用过。
最主要的问题,它不完全是一个第三方程序,而是一个第三方的环境,相当于完全不同的shell,它无法无缝的集成到自己的批处理中,需要时调用,不需要时退出。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2008-6-3 07:44 |
|
|
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 |
|