批处理复制文件并重命名

需求:文件名称格式为:CRP_9648900000_000000000000.txt 复制300份命名如下:

CRP_9648900000_000000000001.txt  

CRP_9648900000_000000000010.txt 

CRP_9648900000_000000000299.txt 

第一个想到就是用bat处理:

version A:这个方法后面要讨论去掉几个零的问题,有点重复了。

for /l %%a in (1,1,9) do copy "E:\workspace\testData\CRP_9648900000_000000000000.txt" "E:\workspace\testData\CRP_9648900000_00000000000%%a.txt" 
for /l %%a in (10,1,99) do copy "E:\workspace\testData\CRP_9648900000_000000000000.txt" "E:\workspace\testData\CRP_9648900000_0000000000%%a.txt" 
for /l %%a in (100,1,299) do copy "E:\workspace\testData\CRP_9648900000_000000000000.txt" "E:\workspace\testData\CRP_9648900000_000000000%%a.txt" 




version B:

这个方法先生成是1001 ~1299 后改名 位0000~0299

for /l %%a in (1001,1,1299) do copy "E:\workspace\testData\CRP_9648900000_000000000000.txt" "E:\workspace\testData\CRP_9648900000_00000000%%a.txt" 
ren *.txt CRP_9648900000_000000000*.txt

想要个写的更加简洁版本。


想参考这个自动生成300个目录的方法,001~300

@ECHO OFF
FOR /L %%i IN (1001,1,1100) DO (
CALL :MDIR %%i
)
GOTO :EOF

:MDIR
SET a=%1
MD %a:~1,3%
GOTO :EOF


VERSION C:

先设置循环 1001~1299 取出 001~299 到文件名称后三位替换掉即可。

@echo off&setlocal enabledelayedexpansion
for /l %%a in (1001,1,1299) do (
set n=%%a
set m=!n:~1,3!
copy "E:\workspace\testData\CRP_9648900000_000000000000.txt" "E:\workspace\testData\CRP_9648900000_000000000!m!.txt"  //此处去掉三个0用 !m!
)


pause

@echo off&setlocal enabledelayedexpansion
for /l %%a in (1001,1,1299) do (
set n=%%a
set m=!n:~1,3!
copy "E:\workspace\testData\CRP_9648900000_000000000000.txt" "E:\workspace\testData\CRP_9648900000_000000000!m!.txt"
)

pause



你可能感兴趣的:(自动化/单元测试研究)