中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-01 12:41
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (已结)怎样将文件名保存到1批处理的指定位置? 查看 2,282 回复 7
楼 主 (已结)怎样将文件名保存到1批处理的指定位置? 发表于 2005-09-20 21:11 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
大家好! 
  请教大家一下,我在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 发表于 2005-09-21 18:29 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
你最好把问题的运行背景交待的更清楚些,例如你要实现什么功能,你打算如何实现等,或者有更好的解决办法。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2005-09-22 19:31 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
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:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
4 发表于 2005-09-23 11:17 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
非常感谢 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 发表于 2005-09-23 19:00 ·  中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
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:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
6 发表于 2005-09-23 22:16 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
willsort 兄:
其实我这个做是以便下次启动直接将C:\1.txt上次check.bat 的%A%比较,若相同
运行指定程序,若不相同Call check.bat 找到与c:\1.txt相同的文件名存到%file%以便
下次启动后直接比较。
以上的两个问题,不知能否劳烦willsort 兄帮我用LMOD写个简短的实例,因为我E文
超差,我只能用LMOD提取文件的部分内生另一文件,其它功能就不知该如何实现。

非常谢谢!
7 发表于 2005-09-24 12:44 ·  中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re quan_zhou:

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

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

关于问题1的LMOD方案:

lmod set 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* > 4.txt

或者这样(它们是等效的,前者更符合书写习惯,后者较贴近阅读习惯):

< 3.txt lmod /l* : | lmod /l* > 4.txt


[ Last edited by willsort on 2005-9-24 at 12:48 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
8 发表于 2005-09-24 17:01 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
willsort 兄:
非常感谢你!你的回贴不但使我遇到问题得以解决,而且又能学到从书本中学不到的东西。
至于“ 题外话”是我一个很不好习惯,做事随随便便的,多谢提醒。我一定
要把它给改过来。
论坛跳转: