Board logo

标题: 求以本文件夹如12345为基础生成12346的文件夹 [打印本页]

作者: 17500     时间: 2007-11-22 02:41    标题: 求以本文件夹如12345为基础生成12346的文件夹

因本人要经常做重复性的动作,郁闷死啦,想请各位大虾帮忙编写一个批处理命令,把小弟从困苦中解救处理~感激不尽!要求如下:
一 以本文件夹如12345为基础生成12346的文件夹(12345和12346都位于同一父目录)
二  并把12345文件夹已经存在的12345_1_01.tif    12345_2_01.tif   12345清单.doc复制到12346文件夹中,并改成相应的文件名,即12346_1_01.tif    12346_2_01.tif   12346清单.doc
三  把12345_2_01.tif   复制成两个新的文件12345_2_02.tif  12345_2_03.tif 在12345文件夹中    原来的 12345_2_01.tif  要保留
四  执行顺序为 一 ,二 , 三,并把此批处理命令复制到12346文件夹中,并在12345文件夹中删除掉此批处理命令
作者: lxmxn     时间: 2007-11-22 08:10
自己思考以后再来提问,这里不是微软售后服务中心。
作者: 17500     时间: 2007-12-3 18:26    标题: 请问第三点怎样实现啊?

多谢版主的激励,第一、二点以解决,但第三点还没有想到办法实现,请教各位,第三点如何实现啊?谢谢拉
作者: lxmxn     时间: 2007-12-3 20:06


  Quote:
Originally posted by 17500 at 2007-12-3 18:26:
多谢版主的激励,第一、二点以解决,但第三点还没有想到办法实现,请教各位,第三点如何实现啊?谢谢拉

你试试这个,但是通用性不是很好:
@echo off & Setlocal EnableDelayedExpansion

for %%a in (12345_2_01.tif) do (
    set filename=%%~nxa
    for /f "delims=_. tokens=1-4" %%b in ("!filename!") do (
        set /a file1=%%d+1
        set /a file2=file1+1
        set file1=0!file1!
        set file2=0!file2!
        set file1=!file1:~-2!
        set file2=!file2:~-2!
        copy "!filename!" "%%b_%%c_!file1!.%%e"
        copy "!filename!" "%%b_%%c_!file2!.%%e"
    )
)

作者: 17500     时间: 2007-12-3 22:44    标题: 不能实现

不能实现,因为我的 文件夹是随机生成的(全部为数字),有规律,就是111112,111113,111114...范围:000000至999999,所生产的tif文件名也是随机的,但跟文件夹的名字是类似的,也就是111112_1_01.tif, 111113_1_01.tif, 111114_1_01.tif  ...所以难点在于如何将当前的文件夹的名字当成要改名的一部分,即一个变量,只是在后面添加上_1_02.tif这个后缀 ,而且要判断111114_1_02.tif是否存在,不存在才复制,已经存在的就不复制了,111114_1_03.tif也一样

现在附上取得当前文件夹名字的批处理,如下:
@echo off
:: 获取当前目录名
:: 当路径中含有空格、感叹号、点号、&和~的时候,也能正确提取
set "cd_=%cd%"

:loop
set "cd_=%cd_:*\=%"
set "cd_tmp=%cd_:\=%"
if not "%cd_tmp%"=="%cd_%" goto loop
echo "%cd_%"
pause

我就是不懂如何将文件名当成一个变量来用,在线等待,谢谢版主的帮助
作者: loveheartrain     时间: 2007-12-3 23:35
一样的啊SET NUM=12345
COPY %NUM%_2_01.tif   %NUM%_2_02.tif   %NUM%_2_03.tif
作者: 17500     时间: 2007-12-4 15:35    标题: 提示找不到文件

6楼的方法我以前已尝试过,但提示找不到文件,因为在每个文件的文件名都不是一样的