![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 05:57 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 复制修改文件的批处理问题 |
| 可打印版本 698 / 8 |
| 第1楼 admking | 发表于 2009-01-23 10:42 |
| 新手上路 发帖 6 积分 7 | |
|
复制修改文件的批处理问题 我是一个新手,想弄一个满足如下条件的批处理程序,请大家帮帮我。谢谢了!
我有一个名为457003.out文件(文本文件),需要将文本中的一个字符串“test1”替换为600001,同时将文件名修改为600001.out;并且,将该.out文件复制成100份,每一个的文件名为600001.out——600100.out,同时,.out文件中的test1,也是600001——600100. 请问,用批处理能够实现么?该怎样实现呢? 非常感激! |
|
| 第2楼 BaseCoder | 发表于 2009-01-23 11:01 |
| 初级用户 发帖 13 积分 20 | |
|
[ Last edited by BaseCoder on 2009-1-23 at 11:12 ] |
|
| 第3楼 admking | 发表于 2009-01-23 11:18 |
| 新手上路 发帖 6 积分 7 | |
|
谢谢你的帮助,刚才试了试,效果不错。
非常感谢! 在测试的时候,提示有“此时不应有 <。” 是什么意思呢? |
|
| 第4楼 BaseCoder | 发表于 2009-01-23 11:23 |
| 初级用户 发帖 13 积分 20 | |
|
那应该是你文本里面的内容有特殊的字符导致的
|
|
| 第5楼 admking | 发表于 2009-01-23 11:53 |
| 新手上路 发帖 6 积分 7 | |
|
刚才修改一下程序:
@echo off&setlocal enabledelayedexpansion set n=00620001 :loop for /f "delims=" %%i in (00490146.out) do ( set a=%%i call set a=%%a:test1=!n!%% >>!n!.out echo !a! ) set /a n+=1 if !n! lss 00620101 call:loop !n! 按照这样测试,发现新生成的文件名,除了第一个是按照00620001进行的,其他的都是如下:204803.out 204804.out 204805.out 204806.out 204807.out 204808.out 204809.out 204810.out 204811.out 204812.out .... 请问这样修改呢?谢谢了! |
|
| 第6楼 BaseCoder | 发表于 2009-01-23 11:55 |
| 初级用户 发帖 13 积分 20 | |
|
如果数值的前面的0开头的,系统会将其默认为八进制表示方式,所以就做八进制运算了,要注意这一点
|
|
| 第7楼 admking | 发表于 2009-01-23 12:01 |
| 新手上路 发帖 6 积分 7 | |
|
那能不能避免这样呢?保持前面的0.
|
|
| 第8楼 admking | 发表于 2009-01-23 12:19 |
| 新手上路 发帖 6 积分 7 | |
|
我调整了一下程序:
@echo off&setlocal enabledelayedexpansion set n=620001 :loop for /f "delims=" %%i in (00490146.out) do ( set a=%%i call set a=%%a:test1=00!n!%% >>00!n!.out echo !a! ) set /a n+=1 if !n! lss 620101 call:loop !n! 这样就可以实现我的目标了 谢谢了 |
|
| 第9楼 BaseCoder | 发表于 2009-01-23 12:19 |
| 初级用户 发帖 13 积分 20 | |
|
>>00!n!.out echo !a!
也许这样能解决你的问题 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |