标题: [文本处理] [已解决]批处理重定向符输出文件 [打印本页]
作者: Wingl83 时间: 2010-9-10 18:22 标题: [已解决]批处理重定向符输出文件
-
- @echo off
- set "n=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="安全模式" /safeboot:minimal /sos /bootlog /noguiboot"
- (for /f "delims=" %%a in (boot.ini) do (
- echo %%a
- if "%%a" equ "[operating systems]" echo %n%
- ))>boot.ini
复制代码
弹出错误提示:
要不然就
究竟是哪里有问题?
[ 本帖最后由 Wingl83 于 2010-9-10 23:06 编辑 ]
作者: zqz0012005 时间: 2010-9-10 20:10
1、注释掉@echo off或者把%n%手动换成实际字符串就知道错误原因了。使用!n!
2、文件访问冲突。你在for里是读,在重定向里是写,其实是写操作先打开文件的,且由于是覆盖模式,打开时会把文件清空,其他命令去读时就读不到原来的内容了。至于提示错误找不到文件,可能是在(for file)>file的方式下对for来说有点特殊,会导致for找不到文件。(type file)>file就不会提示此错误。
试试:
echo hello>1.txt
type 1.txt > 1.txt
type 1.txt
echo hello>1.txt
type 1.txt >> 1.txt
type 1.txt
作者: Wingl83 时间: 2010-9-10 20:38
原帖由 zqz0012005 于 2010-9-10 20:10 发表
1、注释掉@echo off或者把%n%手动换成实际字符串就知道错误原因了。使用!n!
2、文件访问冲突。你在for里是读,在重定向里是写,其实是写操作先打开文件的,且由于是覆盖模式,打开时会把文件清空,其他命令去读时 ...
那只可以输出到新的文件再覆盖boot.ini么?
作者: zqz0012005 时间: 2010-9-10 21:23
其实用临时文件效率还是挺高的。
or like this- @echo off
- set "flag="
- for /f %%a in (01.txt) do if not defined flag (set flag=1&echo +%%a>01.txt) else echo -%%a>>01.txt
复制代码
这次读、写操作打开文件的顺序不同了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |