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
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 要求不生成临时文件,试了好多方法都不可以,请大家给个方案~
如果是每行加行号呢