![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 14:07 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » (已结)怎样将文件名保存到1批处理的指定位置? |
| 可打印版本 2,434 / 7 |
| 第1楼 quan_zhou | 发表于 2005-09-20 21:11 |
| 初级用户 发帖 40 积分 190 | |
|
(已结)怎样将文件名保存到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 ] |
|
| 第2楼 Climbing | 发表于 2005-09-21 18:29 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
你最好把问题的运行背景交待的更清楚些,例如你要实现什么功能,你打算如何实现等,或者有更好的解决办法。
|
|
| 第3楼 willsort | 发表于 2005-09-22 19:31 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
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 中到底是些什么内容了。 |
|
| 第4楼 quan_zhou | 发表于 2005-09-23 11:17 |
| 初级用户 发帖 40 积分 190 | |
|
非常感谢 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 ------------------- 再次感谢大家的关注,谢谢!!! |
|
| 第5楼 willsort | 发表于 2005-09-23 19:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
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或者我提到的批处理试试看。关于它们的用法和相关解释说明,过去的帖子中有很多,你可以搜索看看。 |
|
| 第6楼 quan_zhou | 发表于 2005-09-23 22:16 |
| 初级用户 发帖 40 积分 190 | |
|
willsort 兄:
其实我这个做是以便下次启动直接将C:\1.txt上次check.bat 的%A%比较,若相同 运行指定程序,若不相同Call check.bat 找到与c:\1.txt相同的文件名存到%file%以便 下次启动后直接比较。 以上的两个问题,不知能否劳烦willsort 兄帮我用LMOD写个简短的实例,因为我E文 超差,我只能用LMOD提取文件的部分内生另一文件,其它功能就不知该如何实现。 非常谢谢! |
|
| 第7楼 willsort | 发表于 2005-09-24 12:44 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re quan_zhou:
其实我的英文也可以说是很差,很多东西都是硬着头皮看下来的。LMOD的主要作用将源文本根据指定的要求过滤、转换为目标文本,你能生成另一文件,其实就已经离将其保存到环境变量的要求很近了,你只需要在其前面加上一句set 1=并且将它生成到批处理中调用就可以实现了。 题外话:感觉在 autoexec.bat 中使用 file a 1 s.txt 这些没有含义或含义过泛的变量或文件名字,有些过于随意了。请不要见怪 ![]() 关于问题1的LMOD方案: 关于问题2的LMOD方案(因为不知道是否可以控制行号的输出位数,所以采用了二次过滤的方法,也许 Climbing 兄或其他熟悉 LMOD 的朋友有更好的办法): 或者这样(它们是等效的,前者更符合书写习惯,后者较贴近阅读习惯): [ Last edited by willsort on 2005-9-24 at 12:48 ] |
|
| 第8楼 quan_zhou | 发表于 2005-09-24 17:01 |
| 初级用户 发帖 40 积分 190 | |
|
willsort 兄:
非常感谢你!你的回贴不但使我遇到问题得以解决,而且又能学到从书本中学不到的东西。 至于“ 题外话”是我一个很不好习惯,做事随随便便的,多谢提醒。我一定 要把它给改过来。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |