标题: [求助]用目录下某后缀名的文件建立目录后移动文件
[打印本页]
作者: flybird2020
时间: 2007-8-13 10:04
标题: [求助]用目录下某后缀名的文件建立目录后移动文件
由于工作需要 有时会重复做一种事情
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 ]
作者: flybird2020
时间: 2007-8-13 12:28
自己觉得乱七八糟的。。。有人指点下不。。。
我本来设定的是如果不输入1、2、3的话回车就清屏回到顶部
不过好像没有效果啊
还是默认上一步的操作
是哪里的问题呢?
[
Last edited by flybird2020 on 2007-8-13 at 01:45 PM ]
作者: wudixin96
时间: 2007-8-13 15:12
if /I "%ST%"=="3" goto :eof '这个冒号必须加的。
goto start '前面的if {%choice%}=={}就不要了。
作者: 26933062
时间: 2007-8-13 15:12
以文件名为名创建文件夹,并把文件移至该文件夹。并重命名为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
作者: flybird2020
时间: 2007-8-13 15:54
Quote: |
Originally posted by 26933062 at 2007-8-13 03:12 PM:
以文件名为名创建文件夹,并把文件移至该文件夹。并重命名为01
就是你说的第4点没看懂,既然已经剪切了,怎么会有重复走过这个过程的文件存在 ... |
|
太牛了。。。
无语~#_#
如果要做个备份呢?
就是说我删过了还是想再还原的话呢
第4点自己没写清楚,开始是想是不是要多级目录下找相关后缀文件,现在不需要管它。。。
作者: flybird2020
时间: 2007-8-13 16:41
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的话再按空回车
代码就自动重复上一步的动作
是哪里不对了?不是跳到顶部的么?