标题: 批处理实现输出退行(第二篇)
[打印本页]
作者: scriptor
时间: 2006-12-28 15:50
标题: 批处理实现输出退行(第二篇)
怎么写这个文件?
它的目的是,在同一行输出,不另起一行
比如:
echo a >t.txt
那么在t.txt中就有了一行显示了 a
现在问题来了,
echo b >t.txt
b在文件t.txt 中另起了一行,那么怎么做才能让它紧跟着 a 前显示即:
ba
这篇文章与我上次发的有不同哦。
第一篇为:http://www.cn-dos.net/forum/viewthread.php?tid=25963&fpage=1
我想了很久也没有想到,请帮忙!!谢了
[
Last edited by scriptor on 2006-12-28 at 02:51 AM ]
作者: NaturalJ0
时间: 2006-12-28 21:13
set /p =a<nul>a.txt
set /p =b<nul>>a.txt
作者: ccwan
时间: 2006-12-28 21:34
NaturalJ0兄
楼主是想要先输入a,再输入b,但b在a前。
作者: HUNRYBECKY
时间: 2006-12-28 21:42
反响操作就可以了
set /p =b<nul>a.txt
set /p =a<nul>>a.txt
作者: jmz573515
时间: 2006-12-28 21:55
不知道能不能把a.txt读到变量,这样可以先把a写入之后读到变量,之后重新写入b.在写入变量就可以了,可是我不会,只能说一下自己的思路.
作者: redtek
时间: 2006-12-28 22:49
Type 不带换行符的文件--假定内容为B 另一个文件--假定内容为A >demo.txt
(“连续” Type 命令读两个文件,按顺序将它们“连成一体”定向写入到另一个文件。)
(不带换行符内容的文件,由 set/p 建立)
那么 demo.txt 内容就会为 "BA"
要不就 copy /b ....或是 For ...
或是 “反---瞎起的名字” 定向操作……
run.bat 内容如下::: 假定内容为 a 的一个名为 t.txt 的文件文件已经建立。
:: 假定要将一个字符 “b” “插入” 以 t.txt 文件第1个字符的“前”面(左边),则:
@echo off
set /p var=
>t.txt Echo b%var%
另类使用上面建的代码方法: Quote: |
C:\TEMP\str\k>type t.txt
a
C:\TEMP\str\k>run.bat<t.txt
C:\TEMP\str\k>type t.txt
ba |
|
[
Last edited by redtek on 2006-12-28 at 09:55 AM ]
作者: scriptor
时间: 2006-12-28 22:59
Quote: |
Originally posted by HUNRYBECKY at 2006-12-28 08:42:
反响操作就可以了
set /p =b<nul>a.txt
set /p =a<nul>>a.txt |
|
不能反向输入啊,我的本意是先输入a,然后输入b的时候,
使得b放在a的前面。如果你先输入b就没有我的含义了。
作者: scriptor
时间: 2006-12-28 23:19
看来这个难以实现??
是吗?
有人回答吗?
作者: PPdos
时间: 2006-12-29 00:12
标题: 很多人也想到了吧?
@echo off
:x
set /p b=输入的字符:
echo %b%>>k.txt
set /p a=<k.txt&echo %b%%a%>k.txt
set /p a=<k.txt&echo %b%%a%>k.txt
goto x
pause>nul
[
Last edited by PPdos on 2006-12-28 at 11:30 AM ]
作者: lxmxn
时间: 2006-12-29 00:23
一个变通的方法:
假设文件a.txt中已经有"cn-dos"字符了,要在在前面加上"www",可以在命令行这样操作:
copy /y /b con + a.txt b.txt
::输入你要加的内容之后按F6回车即可,然后将b.txt覆盖a.txt。
copy /y b.txt a.txt
::可以达到目的了,可能这不是楼主的本意。
作者: NaturalJ0 时间: 2006-12-29 00:39
= =b 不好意思,看错楼主意思了。
echo a>t.txt
set /p tempvariable=<t.txt
echo b%tempvariable%>t.txt
如果你只有一行的话,可以这样。
作者: scriptor 时间: 2006-12-29 00:58
谢谢各位了
作者: rochan 时间: 2006-12-29 01:55
9楼代码有点误差..依次输入 1 2 3 4 5 6 7 8 后 k.txt文件中 会出现 8642打开 ECHO。...而不是 87654321
我改了一下..测试过了.成功!!
代码如下:
@echo off
if not exist k.txt echo. >k.txt
:x
set /p a=<k.txt
set /p b=输入的字符:
:::echo %b% >>k.txt
echo %b%%a% >k.txt
goto x
作者: ccwan 时间: 2006-12-29 02:12
这倒让我想起那个输出倒文的批处理了。^_^
作者: vkill 时间: 2006-12-29 02:41
如果单是实现这样的,下面用sed的实现:
>t.txt (echo a)
set "var=b"
sed "1i\%var%" t.txt|sed "$!N;s/\n//"|more>t1.txt
type t1.txt
作者: PPdos 时间: 2006-12-29 02:57 标题: 谢谢修改 一时兴奋 发的快了点 嘿嘿~ ^^
Quote: |
Originally posted by rochan at 2006-12-28 12:55 PM:
9楼代码有点误差..依次输入 1 2 3 4 5 6 7 8 后 k.txt文件中 会出现 8642打开 ECHO。...而不是 87654321
我改了一下..测试过了.成功!!
代码如下:
[code]@echo o ... |
|
作者: weapfe
时间: 2006-12-29 19:09
标题: 好像13樓的代碼也有一些問題。。。
9楼代码有点误差..依次输入 1 2 3 4 5 6 7 8 后 k.txt文件中 会出现 8642打开 ECHO。...而不是 87654321
我改了一下..测试过了.成功!!
代码如下:
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------
@echo off
if not exist k.txt echo. >k.txt
:x
set /p a=<k.txt
set /p b=输入的字符:
:::echo %b% >>k.txt
echo %b%%a% >k.txt
goto x
運行後,我輸入987後,再連續點3次回車,關閉CMD後,打開k.txt看為777789。。。。能改進這個問題否??
作者: PPdos
时间: 2006-12-29 19:44
标题: 再加入if not 变量=="" command做吧
作者: pengfei
时间: 2006-12-30 00:43
看到国外的批处理脚本写的那么精彩, 再看我们论坛对批处理的理解只是简单玩玩而已, 不免有些感触.
国外写的批处理不但对算法有很深的研究, 对三种基本结构的使用也很精通. 似乎中国人对批处理研究却没那么深入. 原因在于没有把编程的思想应用到批处理中来.
其实批处理脚本有很好的灵活性, 甚至可以模拟实现一些高级语言的功能. 这又建立在对算法的研究的数据结构的理解上. 如果大家能把这两点做好, 相信可以把论坛的批处理推水平推向一个更高的层次, 使批处理有更广的应用范围, 吸引更多的人来交流学习~!~
这个问题我采用数组的方法来解决, 当然不止这一种方法:
@echo off
setlocal enabledelayedexpansion
set num=0
:go
set /a num+=1
set /p ii%num%=Input %num% number:
if %num% lss 10 goto go
for /l %%i in (%num%,-1,1) do echo !ii%%i!
pause
作者: ccwan
时间: 2006-12-30 01:01
好像楼主要求输出在同一行,pengfei的代码做一点修改:
@echo off
setlocal enabledelayedexpansion
set num=0
:go
set /a num+=1
set /p ii%num%=Input %num% number:
if %num% lss 10 goto go
for /l %%i in (%num%,-1,1) do @set/p=!ii%%i!<nul
pause
作者: zh159
时间: 2006-12-30 01:08
19楼的得全部输入完毕后才写入文件,如果原文件已有内容要加入就不行了
国人本来就对英语不是很熟悉,只能具体方法具体应用了,更不用说编程了(估计真正会编程的不在多数)
作者: pengfei
时间: 2006-12-30 01:36
Quote: |
Originally posted by zh159 at 2006-12-30 01:08:
19楼的得全部输入完毕后才写入文件,如果原文件已有内容要加入就不行了
国人本来就对英语不是很熟悉,只能具体方法具体应用了,更不用说编程 ... |
|
数组已经构造好, 灵活修改就可以适应各种需要了.
英语的确很重要, 但不是主要原因. 中国人善长思维, 最伟大的谋略家在中国, 同时中国有一流的数学家. 但中国人却写不出优秀的编译器, 至今也没有能够独立编写操作系统内核的奇才, 不免是中国教育模式的失败.
编程具体还在于理解.
作者: 9527
时间: 2006-12-30 02:41
同意pengfei兄的想法,确实是,编程最大的障碍不在语言上,而是在思想和主观对其的理解上,很多地方我们需要和别人学,学的是他们考虑问题的方式和方法,我们真应该反省一下啦
作者: pengfei
时间: 2006-12-30 03:09
看来9527兄对此也有同感, 算法和数据结构博大精深, 不深入理解的话编程也会寸步难行.
论坛的批处理需要向国外的同行学习. 用先进的算法来解决问题.
作者: vkill
时间: 2006-12-30 03:26
不一定越难的方法就是好方法,我们的目的是解决问题,我想我们最重要的是思路,不管什么方法,越多越好,不能一味的追求算法
作者: zh159
时间: 2006-12-30 04:11
嗯,好的要学习,罗嗦的就......
想起前段时间有人贴上来一段老外的获取系统当前日期的代码,算法完善一大堆;而我们的基本上就两三行-_-|||
该用算法的用算法,该简化的就简化
[
Last edited by zh159 on 2006-12-29 at 03:13 PM ]
作者: pengfei
时间: 2006-12-30 04:34
算法就是解决问题的步骤, 好的算法可以提高效率, 简化程序. 论坛里发的批处理大都是解决一些不太复杂的问题, 可能对算法不太重要. 但做一些复杂的操作或超出DOS命令的应用范围时, 我们就得采取迂回战术, 用各种方法得到我们想要的结果. 你就会感到算法是多么重要.
熟悉各种算法对写脚本的重要性自然不言而喻, 否则一遇到复杂的问题就没撤了.
作者: pengfei
时间: 2006-12-30 04:39
Quote: |
Originally posted by vkill at 2006-12-30 03:26:
不一定越难的方法就是好方法,我们的目的是解决问题,我想我们最重要的是思路,不管什么方法,越多越好,不能一味的追求算法 |
|
算法是解决问题的步骤, 兄强调解决问题的思路的重要性. 不是和不能一味追求算法矛盾吗?
研究算法的最终目的是写出运行效率高, 代码简洁的程序或脚本.
写复杂的脚本没有一个好的算法是不行的.
[
Last edited by pengfei on 2006-12-30 at 04:41 AM ]
作者: zh159
时间: 2006-12-30 04:43
嗯
不过要真想融会贯通还得下苦功夫才行(时间+精力啊)
作者: tao0610
时间: 2006-12-30 05:26
19楼的代码其实就是对输入倒序排列输出而已.但对楼主的问题并不很适合.
而13楼基本已经给好的解决方法.
解决问题有多种方法,但不需要盲目追求算法的"
先进性"
毕竟看一个程序的好坏不是看它的算法有多复杂,而是看它解决问题的效果.
用
小打小闹来解决问题,正是批处理的优点.
@echo off
if not exist k.txt echo. >k.txt
:x
set b=
set /p a=<k.txt
set /p b=输入的字符:
if "%b%"=="" goto :eof
echo %b%%a% >k.txt
goto x
[
Last edited by tao0610 on 2006-12-29 at 04:28 PM ]
作者: scriptor
时间: 2006-12-30 09:11
一个问题引发这么多的思想和感触,还有方法,让我很感动啊
作者: scriptor
时间: 2006-12-30 09:14
Quote: |
Originally posted by pengfei at 2006-12-29 11:43:
看到国外的批处理脚本写的那么精彩, 再看我们论坛对批处理的理解只是简单玩玩而已, 不免有些感触.
国外写的批处理不但对算法有很深的研究, 寠... |
|
很有感触地
我不是学计算机的,我只是有个时候对编程很有兴趣,常编一些小玩意儿娱乐
并实现我要做的工作啊
我不是很会研究算法的
望大家提携
谢谢
作者: minmin888
时间: 2007-5-8 18:58
学习想法,学习算法!