标题: 复制修改文件的批处理问题
[打印本页]
作者: 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!
也许这样能解决你的问题