中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求以本文件夹如12345为基础生成12346的文件夹
作者:
标题: 求以本文件夹如12345为基础生成12346的文件夹 上一主题 | 下一主题
17500
新手上路





积分 19
发帖 9
注册 2007-11-22
状态 离线
『楼 主』:  求以本文件夹如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文件夹中删除掉此批处理命令

2007-11-22 02:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

自己思考以后再来提问,这里不是微软售后服务中心。

2007-11-22 08:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
17500
新手上路





积分 19
发帖 9
注册 2007-11-22
状态 离线
『第 3 楼』:  请问第三点怎样实现啊?

多谢版主的激励,第一、二点以解决,但第三点还没有想到办法实现,请教各位,第三点如何实现啊?谢谢拉

2007-12-3 18:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  



  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"
    )
)


2007-12-3 20:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
17500
新手上路





积分 19
发帖 9
注册 2007-11-22
状态 离线
『第 5 楼』:  不能实现

不能实现,因为我的 文件夹是随机生成的(全部为数字),有规律,就是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

我就是不懂如何将文件名当成一个变量来用,在线等待,谢谢版主的帮助

2007-12-3 22:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
loveheartrain
初级用户

DOS之迷


积分 174
发帖 81
注册 2007-11-7
状态 离线
『第 6 楼』:  

一样的啊SET NUM=12345
COPY %NUM%_2_01.tif   %NUM%_2_02.tif   %NUM%_2_03.tif



愛意之无尽@灵犀!
QQ:71216716 E_mail:l.h.r.@163.com
2007-12-3 23:35
查看资料  发送邮件  发短消息 网志  OICQ (71216716)  编辑帖子  回复  引用回复
17500
新手上路





积分 19
发帖 9
注册 2007-11-22
状态 离线
『第 7 楼』:  提示找不到文件

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

2007-12-4 15:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: