标题: [文本处理] 求助批处理利用if控制for循环处理文本错在哪里? [打印本页]
作者: whon 时间: 2009-3-14 14:09 标题: 求助批处理利用if控制for循环处理文本错在哪里?
写了一段代码,目的是给当前文件夹中的txt文件加上个文件头,代码如下:- @echo off
- setlocal enabledelayedexpansion
- set t1=D8888D贴子标题-------------------------------------------------------
- set t3=D8888D主贴内容-------------------------------------------------------
- set t=
- for %%i in (*.txt) do (
- set /p t= < %%i
- if !t!==t1 goto nextfile
- echo %t1% > file.tmp
- echo !t! >> file.tmp
- echo %t3% >> file.tmp
- type "%%i" >> file.tmp
- del /f /q "%%i"
- ren file.tmp "%%i"
- :nextfile
- )
- pause
- exit
复制代码
屏蔽if行后运行正常,估计有错,请教各位,谢谢先。
ps:if行的目的是实现判断是否已经加过文件头。
[ 本帖最后由 whon 于 2009-3-15 11:16 编辑 ]
作者: tireless 时间: 2009-3-14 14:42
标签不能在 for 里面。- @echo off
- setlocal enabledelayedexpansion
- set t1=D8888D贴子标题-------------------------------------------------------
- set t3=D8888D主贴内容-------------------------------------------------------
- for %%i in (*.txt) do (
- set /p t= < %%i
- if not "!t!"=="%t1%" (
- (echo %t1%&echo !t!&echo %t3%&type "%%i")>file.tmp
- move file.tmp "%%i"
- )
- )
复制代码
作者: Batcher 时间: 2009-3-14 14:49
本版规则
1、求代码、寻求代码解释、探讨代码得失的帖子均可发在本版块,其余话题禁止在本版讨论;
2、求助时,务必在顶楼一次性把问题交代清楚;若文字难以表述,请配图说明,或是上传附件;但是,一切操作应从节约论坛资源的角度出发,能文字说明清楚的就无需再发图片,小图能说明问题的尽量不截全图,在不影响效果的前提下尽量压缩图片及附件;
3、所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;
Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
作者: whon 时间: 2009-3-14 15:22
多谢提醒 已修改
作者: whon 时间: 2009-3-14 15:33
原帖由 tireless 于 2009-3-14 14:42 发表
标签不能在 for 里面。@echo off
setlocal enabledelayedexpansion
set t1=D8888D贴子标题-------------------------------------------------------
set t3=D8888D主贴内容------------------------------------ ...
原来如此多谢 我试了if else 还是不行 能否指点一下?
作者: tireless 时间: 2009-3-14 15:58 标题: 回复 5楼 的帖子
出错提示是什么?txt 文件没有被修改?file.tmp 没有被删除?
作者: whon 时间: 2009-3-14 16:20
运行结果是:没有运行结果。文本没有修改,cmd运行窗口也是一闪而过。屏蔽if行以后运行正常,修改文本的目的也能实现。说明出错在if行。if !t!==t1 这样表达对吗?- @echo off
- setlocal enabledelayedexpansion
-
- set t1=D8888D贴子标题-------------------------------------------------------
- set t3=D8888D主贴内容-------------------------------------------------------
- set t=
- rem set /a sum=0
-
- for %%i in (*.txt) do (
- set /p t= < %%i
- echo !t!
- pause
- if !t! neq %t1% (
- echo %t1% > file.tmp
- echo !t! >> file.tmp
- echo %t3% >> file.tmp
- type "%%i" >> file.tmp
- del /f /q "%%i"
- ren file.tmp "%%i"
- )else(echo 该文件已有标签!&pause)
- )
- pause
- exit
复制代码
作者: more 时间: 2009-3-14 17:13
把多余的空格去掉!!!- @echo off
- setlocal enabledelayedexpansion
- set "t1=D8888D贴子标题-------------------------------------------------------"
- set "t3=D8888D主贴内容-------------------------------------------------------"
- set "fl=file.tmp"
- for %%i in (*.txt) do (
- set /p t=<"%%i"
- if /i not "!t!"=="%t1%" (
- >%fl% echo %t1%
- >>%fl% echo !t!
- >>%fl% echo %t3%
- >>%fl% type "%%i"
- move /y %fl% "%%i"
- ) else (echo 该文件已有标签!)
- )
- pause
复制代码
[ 本帖最后由 more 于 2009-3-14 17:16 编辑 ]
作者: whon 时间: 2009-3-14 18:32
多谢多谢!不仅解决了问题而且精简许多,学习学习!
作者: whon 时间: 2009-3-14 18:55
实际处理过程中遇到带冒号的标题 例如“秘书揭密一段历史:1958年军委扩大会议真相” 会提示出错 而且没有正确修改文件 应该如何解决呢?
作者: qq381234916 时间: 2009-3-17 09:02
还是没看懂。~~看来还得加倍努力啊
作者: Batcher 时间: 2009-3-17 09:20 标题: 回复 10楼 的帖子
你把@echo off删掉,看看是哪里出错了。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |