Board logo

标题: 写入%var%到txt文件第一行的问题 [打印本页]

作者: vkill     时间: 2006-10-26 07:47    标题: 写入%var%到txt文件第一行的问题

set var=123456

test.txt
00
11
22
33

我想把test.txt内容写为
123456
00
11
22
33


要求不生成临时文件,试了好多方法都不可以,请大家给个方案~
作者: lxmxn     时间: 2006-10-26 10:26

  我也试了好多方法,最后终于被我试出来了,而且测试也是成功的代码如下:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
set var=123456
set str=
for /f "TOKENS=*" %%i in ('type a.txt') do (
        set str=!str!#%%i
)
call :no %str%
goto :eof

:no
set "a=%1"
echo %var%>a.txt
:redo
for /f "tokens=1 delims=#" %%l in ("%a%") do (
        echo %%l>>a.txt
        for /f "tokens=1* delims=#" %%p in ("%a%") do (
                set a=#%%q
                goto :redo
        )
)

作者: 3742668     时间: 2006-10-26 11:00

@echo off
setlocal ENABLEDELAYEDEXPANSION
    set file=test.txt
    for /f "delims=: tokens=1,*" %%i in ('findstr /n . %file%') do set "%%i=%%j" & set num=%%i
    echo 123456>%file%
    for /l %%i in (1,1,%num%) do if defined %%i (>>%file% echo !%%i!) else (>>%file% echo.)
基本解决空行,&,|的问题.
作者: lxmxn     时间: 2006-10-26 11:09

  不得不佩服版主,看到了差距了。继续学习ing…………


[ Last edited by lxmxn on 2006-10-26 at 11:10 AM ]
作者: 不得不爱     时间: 2006-10-26 20:52
3楼代码不错
作者: NaturalJ0     时间: 2006-10-26 20:53
强,看了这帖,学习了不少。
作者: redtek     时间: 2006-10-26 21:00
精彩!学习了~:)
作者: 9527     时间: 2006-10-26 22:06
我也顺便来一个吧,

@echo off&setlocal
for /f "tokens=*" %%a in ('echo 12345^&more^<test.txt') do (
if not defined a (>test.txt echo %%a&set a=1) else >>test.txt echo %%a )

谢谢版主提醒

[ Last edited by 9527 on 2006-10-27 at 01:26 AM ]
作者: lxmxn     时间: 2006-10-27 00:02

  9527 兄的代码也强,不过有一点不明白,为什么要加上"set a=1"这一句呢?

作者: 不得不爱     时间: 2006-10-27 01:03
9527 兄的代码会忽略空格后面的字
作者: vkill     时间: 2006-10-27 01:23
9527 兄的这个if not defined a刚刚查了下才懂,学习ing
作者: NaturalJ0     时间: 2006-10-27 01:54
9527 能想到这样用真是厉害。不过好像空行被忽略了。有没办法改进下呢?

PS:既然已经想到连用,可能顺便加上一句删除也不错,这样后面就不用定义变量 a 了。

[ Last edited by NaturalJ0 on 2006-10-27 at 02:22 AM ]
作者: 不得不爱     时间: 2006-10-27 04:28
set a=1就是设置a为1,如果不设置a为1那么>test.txt echo %%a就一直会执行
作者: wtp791211     时间: 2006-10-27 04:54
强,不过有些看得不在明白,偶还得继续努力!
作者: xycoordinate     时间: 2007-3-10 02:34
强呀!

建议:
增加1个”收藏“选项,将好的帖子收藏起来,以后直接点收藏就能出来!
作者: joyoustar     时间: 2007-3-21 00:59
好东西啊。
作者: swallow     时间: 2007-3-21 04:53    标题: 标题: 写入%var%到txt文件第一行的问题

我是菜鸟,看懵了。
作者: wudixin96     时间: 2007-4-6 22:04
一个比一个删减。一个比一个难理解
作者: kavenlee72     时间: 2009-1-21 11:24
上面的代码在纯DOS(比如DOS7.1)下不能运行
作者: netbenton     时间: 2009-1-21 18:48    标题: 一句搞定

for /f "tokens=1,2* delims=:" %%a in ('echo a:%var%^&findstr/o ".*" test.txt^&cd.^>test.txt') do echo.%%b>>test.txt

不会丢掉空行
在9527的基础上改进的

[ Last edited by netbenton on 2009-1-21 at 19:58 ]
作者: hbwhyin     时间: 2010-3-19 02:40
要是在前面加行号呢,比如
1=
2=
3=
4=
作者: hbwhyin     时间: 2010-3-19 02:42


  Quote:
Originally posted by vkill at 2006-10-26 07:47 AM:
set var=123456

test.txt
00
11
22
33

我想把test.txt内容写为
123456
00
11
22
33


要求不生成临时文件,试了好多方法都不可以,请大家给个方案~

如果是每行加行号呢