Board logo

标题: 复制修改文件的批处理问题 [打印本页]

作者: admking     时间: 2009-1-23 10:42    标题: 复制修改文件的批处理问题

我是一个新手,想弄一个满足如下条件的批处理程序,请大家帮帮我。谢谢了! 我有一个名为457003.out文件(文本文件),需要将文本中的一个字符串“test1”替换为600001,同时将文件名修改为600001.out;并且,将该.out文件复制成100份,每一个的文件名为600001.out——600100.out,同时,.out文件中的test1,也是600001——600100. 请问,用批处理能够实现么?该怎样实现呢? 非常感激!

作者: BaseCoder     时间: 2009-1-23 11:01
@echo off&setlocal enabledelayedexpansion
set n=600001
:loop
for /f "delims=" %%i in (457003.out) do (
set a=%%i
call set a=%%a:test1=!n!%%
>>!n!.out echo !a!
)
set /a n+=1
if !n! lss 600101 call:loop !n!
[ Last edited by BaseCoder on 2009-1-23 at 11:12 ]

作者: admking     时间: 2009-1-23 11:18
谢谢你的帮助,刚才试了试,效果不错。 非常感谢! 在测试的时候,提示有“此时不应有 <。” 是什么意思呢?

作者: BaseCoder     时间: 2009-1-23 11:23
那应该是你文本里面的内容有特殊的字符导致的

作者: admking     时间: 2009-1-23 11:53
刚才修改一下程序: @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 .... 请问这样修改呢?谢谢了!

作者: BaseCoder     时间: 2009-1-23 11:55
如果数值的前面的0开头的,系统会将其默认为八进制表示方式,所以就做八进制运算了,要注意这一点

作者: admking     时间: 2009-1-23 12:01
那能不能避免这样呢?保持前面的0.

作者: admking     时间: 2009-1-23 12:19
我调整了一下程序: @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! 这样就可以实现我的目标了 谢谢了

作者: BaseCoder     时间: 2009-1-23 12:19
>>00!n!.out echo !a! 也许这样能解决你的问题