[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理重定向符输出文件

  1. @echo off
  2. set "n=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="安全模式" /safeboot:minimal /sos /bootlog /noguiboot"
  3. (for /f "delims=" %%a in (boot.ini) do (
  4.        echo %%a
  5.        if "%%a" equ "[operating systems]" echo %n%
  6. ))>boot.ini
复制代码
弹出错误提示:
此时不应有 disk(0。

要不然就
系统找不到文件 boot.ini。

究竟是哪里有问题?

[ 本帖最后由 Wingl83 于 2010-9-10 23:06 编辑 ]
我是小菜菜……

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
1

评分人数

    • Wingl83: 多谢指教PB + 6 技术 + 1 + 1
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

原帖由 zqz0012005 于 2010-9-10 20:10 发表
1、注释掉@echo off或者把%n%手动换成实际字符串就知道错误原因了。使用!n!

2、文件访问冲突。你在for里是读,在重定向里是写,其实是写操作先打开文件的,且由于是覆盖模式,打开时会把文件清空,其他命令去读时 ...


那只可以输出到新的文件再覆盖boot.ini么?
我是小菜菜……

TOP

其实用临时文件效率还是挺高的。
or like this
  1. @echo off
  2. set "flag="
  3. for /f %%a in (01.txt) do if not defined flag (set flag=1&echo +%%a>01.txt) else echo -%%a>>01.txt
复制代码
这次读、写操作打开文件的顺序不同了。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表