中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]用目录下某后缀名的文件建立目录后移动文件
作者:
标题: [求助]用目录下某后缀名的文件建立目录后移动文件 上一主题 | 下一主题
flybird2020
初级用户





积分 103
发帖 52
注册 2007-4-13
状态 离线
『楼 主』:  [求助]用目录下某后缀名的文件建立目录后移动文件

由于工作需要 有时会重复做一种事情
1、某文件夹下有*.xxx后缀的一堆文件,我需要先建立一堆以“*”为名(不要后缀.xxx)的文件夹
2、建立后按名字的对应,把*.xxx剪切至相应文件夹
3、全部剪切后再把各个文件夹下的*.xxx统一改为某名字,如01.xxx
4、重复运行此批处理时,对于已成功走过这个流程的文件无效,如在碰到名为“01.xxx”的文件时跳过

暂时先说这么多吧。。。一直在看论坛精华帖,也收集了不少BAT,无奈自己还是不很懂,学着写了一些,因为技术不过关,根本达不到效果
像很多代码都不知道意义,很苦恼

期待达人答复,如果因为我没找到相关资料而发帖浪费了大家的时间,在此说声抱歉
color 17
mode con: cols=50 lines=12
title $$$$*RMVB文件批量处理*$$$$
@echo off
:start
cls
@echo *************************************************
@echo *                                               *
@echo *                批处理RMVB文件                 *
@echo * 1、操作文件                                   *
@echo * 2、还原操作                                   *
@echo * 3、退出                                       *
@echo *************************************************

SET /P ST=请输入序号以选择操作:
echo.
if /I "%ST%"=="1" goto doit
if /I "%ST%"=="2" goto redoit
if /I "%ST%"=="3" goto eof
if {%choice%}=={} goto start

:doit
if exist doit.txt goto doit2
dir *.rmvb /oe/b >list.txt

setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (list.txt) do (
    set var=%%i
    set "var=!var:.rmvb=!"
    echo !var!>>doit.txt
)
del list.txt /f/q/s/a

:doit2
for /f "tokens=*" %%i in (doit.txt) do mkdir "%%i"
for /f "tokens=*" %%i in (doit.txt) do move "%%i".rmvb "%%i"
for /f "tokens=*" %%i in (doit.txt) do ren "%%i"\"%%i".rmvb 01.rmvb
ren doit.txt redoit.txt
@echo 处理完毕。。。。
pause.
goto start

:redoit
@echo off
for /f "tokens=*" %%i in (redoit.txt) do ren "%%i"\01.rmvb "%%i".rmvb
for /f "tokens=*" %%i in (redoit.txt) do move "%%i"\"%%i".rmvb ".\"
for /f "tokens=*" %%i in (redoit.txt) do rd "%%i" /s/q
ren redoit.txt doit.txt
@echo 操作还原完毕。。。。
pause.
goto start
我是这样写的,很菜,希望高手说说。。。

[ Last edited by flybird2020 on 2007-8-13 at 01:43 PM ]

2007-8-13 10:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flybird2020
初级用户





积分 103
发帖 52
注册 2007-4-13
状态 离线
『第 2 楼』:  

自己觉得乱七八糟的。。。有人指点下不。。。
我本来设定的是如果不输入1、2、3的话回车就清屏回到顶部
不过好像没有效果啊
还是默认上一步的操作
是哪里的问题呢?

[ Last edited by flybird2020 on 2007-8-13 at 01:45 PM ]

2007-8-13 12:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 3 楼』:  

if /I "%ST%"=="3" goto :eof '这个冒号必须加的。
goto start '前面的if {%choice%}=={}就不要了。

2007-8-13 15:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 4 楼』:  

以文件名为名创建文件夹,并把文件移至该文件夹。并重命名为01
就是你说的第4点没看懂,既然已经剪切了,怎么会有重复走过这个过程的文件存在?
测试成功后将echo去掉即可删除原文件。
@echo off
for /f "delims=" %%i in ('dir/b /a-d') do (
md "%%~ni"
copy "%%i" "%%~ni\01%%~xi"
echo del/q "%%i"
)
pause




致精致简!
2007-8-13 15:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flybird2020
初级用户





积分 103
发帖 52
注册 2007-4-13
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by 26933062 at 2007-8-13 03:12 PM:
以文件名为名创建文件夹,并把文件移至该文件夹。并重命名为01
就是你说的第4点没看懂,既然已经剪切了,怎么会有重复走过这个过程的文件存在 ...

太牛了。。。
无语~#_#

如果要做个备份呢?
就是说我删过了还是想再还原的话呢

第4点自己没写清楚,开始是想是不是要多级目录下找相关后缀文件,现在不需要管它。。。

2007-8-13 15:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flybird2020
初级用户





积分 103
发帖 52
注册 2007-4-13
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by wudixin96 at 2007-8-13 03:12 PM:
if /I "%ST%"=="3" goto :eof '这个冒号必须加的。
goto start '前面的if {%choice%}=={}就不要了。

谢谢大大。。。
那个冒号加上了
goto start这个
在第一次运行时不会有错
如果已运行过1或2的话再按空回车
代码就自动重复上一步的动作
是哪里不对了?不是跳到顶部的么?

2007-8-13 16:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: