中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-14 20:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 写入%var%到txt文件第一行的问题
楼 主 写入%var%到txt文件第一行的问题 发表于 2006-10-26 07:47 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
set var=123456

test.txt
00
11
22
33

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


要求不生成临时文件,试了好多方法都不可以,请大家给个方案~
2 发表于 2006-10-26 10:26 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  我也试了好多方法,最后终于被我试出来了,而且测试也是成功的代码如下:

@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
)
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-10-26 20:56
3 发表于 2006-10-26 11:00 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
@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.)

基本解决空行,&,|的问题.
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-10-26 20:56
4 发表于 2006-10-26 11:09 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

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


[ Last edited by lxmxn on 2006-10-26 at 11:10 AM ]
5 发表于 2006-10-26 20:52 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
6 发表于 2006-10-26 20:53 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
UID 60484
状态 离线
强,看了这帖,学习了不少。
7 发表于 2006-10-26 21:00 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
精彩!学习了~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
8 发表于 2006-10-26 22:06 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
UID 61449
来自 北京
状态 离线
我也顺便来一个吧,

@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 ]
我今后在论坛的目标就是做个超级坏人!!!
9 发表于 2006-10-27 00:02 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  9527 兄的代码也强,不过有一点不明白,为什么要加上"set a=1"这一句呢?
10 发表于 2006-10-27 01:03 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
11 发表于 2006-10-27 01:23 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
9527 兄的这个if not defined a刚刚查了下才懂,学习ing
12 发表于 2006-10-27 01:54 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
UID 60484
状态 离线
9527 能想到这样用真是厉害。不过好像空行被忽略了。有没办法改进下呢?

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

[ Last edited by NaturalJ0 on 2006-10-27 at 02:22 AM ]
13 发表于 2006-10-27 04:28 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
14 发表于 2006-10-27 04:54 ·  中国 天津 南开区 联通
初级用户
积分 34
发帖 20
注册 2006-10-15 08:57
UID 65839
状态 离线
强,不过有些看得不在明白,偶还得继续努力!
15 发表于 2007-03-10 02:34 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
UID 79596
性别 男
来自 安徽
状态 离线
强呀!

建议:
增加1个”收藏“选项,将好的帖子收藏起来,以后直接点收藏就能出来!
论坛跳转: