中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (已结)怎样将文件名保存到1批处理的指定位置?
作者:
标题: (已结)怎样将文件名保存到1批处理的指定位置? 上一主题 | 下一主题
quan_zhou
初级用户




积分 190
发帖 40
注册 2005-3-17
状态 离线
『楼 主』:  (已结)怎样将文件名保存到1批处理的指定位置?

大家好! 
  请教大家一下,我在DOS 7.10下怎样才能怎样将文件名保存到1批处理的指定位置? 这样的批处理该台何写?
  如我要将34.txt的34保存到autoexec.bat 的 set run="位置“,
即set run=34。
             谢谢!

[ Last edited by willsort on 2005-9-25 at 00:16 ]

2005-9-20 21:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

你最好把问题的运行背景交待的更清楚些,例如你要实现什么功能,你打算如何实现等,或者有更好的解决办法。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2005-9-21 18:29
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 3 楼』:  

Re quan_zhou:

      根据你的问题描述猜测,你并不需要把34写到autoexec.bat的set run=“位置”。因为一个能解决你问题的批处理程序,肯定首先可以获取 “34” 这个值,否则就没有可写的东西。而如果它可以获取 “34” 这个值,那么为什么不在这个批处理中直接
set run=34,而非要到 autoexec.bat 中 set run= 呢?如果你是想说,设置用的批处理只调用一次,而 autoexec.bat 需要每次执行,那么你如何保证 34 这个值发生变化时,autoexec 还能被正确的执行?

      所以,我的建议是:在 autoexec.bat 中 call 一个批处理程序,而这个批处理的作用就是找到 34 并 set 给 %run%,至于如何找到 34 就要看你的 34.txt 中到底是些什么内容了。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-9-22 19:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
quan_zhou
初级用户




积分 190
发帖 40
注册 2005-3-17
状态 离线
『第 4 楼』:  

非常感谢 Climbing / willsort 的关注!
这问题我查看贵论坛的贴已解决了,其实如will sort兄所说CALL另一批处理就能解决。
autoexec.bat想实现的功能就是:把1.txt与check.bat得出的%A%直接比较。
echo set file=%a% >b.bat //生成B.bat
在autoexec.bat增加内容如下:
call b.bat
compfile c:\1.txt %file%
若相同测运行指定程序
若不相同 Call check.bat
------------------------------
check.bat(已有)的功能是:DOS下把c:\1.txt与D:\sample1.txt至samplen.txt文件作比较,把与c:\1.txt内容相同的文件名设为变量%A%。
---------------------
备注:
     c:\1.txt是随机生成的可能每次生成的都不一样。

另外请教两位仁兄几个问题:
1、在DOS 7.10下能否把一文本的内容设为变量?
   s.tx的内容为1375905
  如set 1="s.txt的内容“
2、在在DOS 7.10下用什么方法可把3.txt 的内容改到4.txt那样
----- 3.txt------
13926584
13595464
13456931
13711364
------------------
-----4.txt-----
1:
13926584
2:
13595464
3:
13456931
4:
13711364
-------------------
   
  再次感谢大家的关注,谢谢!!!

2005-9-23 11:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 5 楼』:  

Re quan_zhou:

      如果你 call b.bat 只是为了 set file=%a%,那可以直接将它写在 autoexec.bat 中,除非你的 %a% 不是引用环境变量,而是作为一种变量示意。进一步的疑惑是,为何不在 check.bat 中直接将取值设置到 %file% ,或者在 autoexec 中直接用 %a% 进行比较(compfile c:\1.txt %a%)?这样可以省略中间许多的转折。

      至于取文本文件内容到变量,这是一个曾谈论多次的话题,它取决于你的 s.txt 的复杂程度,以及你对获取目标的位置要求。如果 s.txt 中只含有一个单词,而你正是要取它,可以通过 date 或者 time 命令来获取它;如果你的 s.txt 复杂而多变,可以使用第三方工具,比如 LMOD 或者 gawk 等,strings 也可以考虑,它们的优点是使用简单,而且可以应付各种复杂的需求;如果你不能或不愿使用第三方工具,可以参考我过去贴过的关于文本遍历(文件遍历)的批处理程序。

      至于你提到的第二个替换问题,实际上与第一题是同类问题,也可以用 LMOD/GAWK或者我提到的批处理试试看。关于它们的用法和相关解释说明,过去的帖子中有很多,你可以搜索看看。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-9-23 19:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
quan_zhou
初级用户




积分 190
发帖 40
注册 2005-3-17
状态 离线
『第 6 楼』:  

willsort 兄:
    其实我这个做是以便下次启动直接将C:\1.txt上次check.bat 的%A%比较,若相同
运行指定程序,若不相同Call check.bat 找到与c:\1.txt相同的文件名存到%file%以便
下次启动后直接比较。
  以上的两个问题,不知能否劳烦willsort 兄帮我用LMOD写个简短的实例,因为我E文
超差,我只能用LMOD提取文件的部分内生另一文件,其它功能就不知该如何实现。

非常谢谢!

2005-9-23 22:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 7 楼』:  

Re quan_zhou:

      其实我的英文也可以说是很差,很多东西都是硬着头皮看下来的。LMOD的主要作用将源文本根据指定的要求过滤、转换为目标文本,你能生成另一文件,其实就已经离将其保存到环境变量的要求很近了,你只需要在其前面加上一句set 1=并且将它生成到批处理中调用就可以实现了。

      题外话:感觉在 autoexec.bat 中使用 file a 1 s.txt 这些没有含义或含义过泛的变量或文件名字,有些过于随意了。请不要见怪

关于问题1的LMOD方案:
lmod set 1=[$1] < s.txt > _setvar.bat
if exist _setvar.bat for %%c in (call del) do %%c _setvar.bat
关于问题2的LMOD方案(因为不知道是否可以控制行号的输出位数,所以采用了二次过滤的方法,也许 Climbing 兄或其他熟悉 LMOD 的朋友有更好的办法):
lmod /l* [#]:[] < 3.txt | lmod /l* [3,2][+][5] > 4.txt
或者这样(它们是等效的,前者更符合书写习惯,后者较贴近阅读习惯):
< 3.txt lmod /l* [#]:[] | lmod /l* [3,2][+][5] > 4.txt
[ Last edited by willsort on 2005-9-24 at 12:48 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-9-24 12:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
quan_zhou
初级用户




积分 190
发帖 40
注册 2005-3-17
状态 离线
『第 8 楼』:  

willsort 兄:
              非常感谢你!你的回贴不但使我遇到问题得以解决,而且又能学到从书本中学不到的东西。
              至于“ 题外话”是我一个很不好习惯,做事随随便便的,多谢提醒。我一定
要把它给改过来。

2005-9-24 17:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: