标题: [文件管理] 批处理移动文件夹 [打印本页]
作者: 随风 时间: 2007-11-12 15:32 标题: 批处理移动文件夹
不破坏文件夹的结构,移动文件夹。
::- @echo off
- :: code by 随风 2007-11-12 @ bbs.bathome.net
- color 1f&echo\
- echo 请输入要移动的文件夹全路径,或拖动文件夹到此窗口:
- set /p var=
- echo.&echo 请输入目标全路径: 直接回车为当前路径。
- set /p num=
- if "%num%"=="" set num=%cd%
- echo\
- set str=
- set var=%var:"=%
- if "%var:~-1%"=="\" set var=%var:~0,-1%
- if "%num:~-1%"=="\" set num=%num:~0,-1%
- cls&echo\&echo 即将移动 %var% 文件夹到 %num%
- echo\
- echo 如果移动过程遇到同名文件,请选择是覆盖原文件,还是在新文件后面加序号。
- echo\&echo 按 f 覆盖,其它键在新文件后面加序号:
- echo\
- set /p xuhao=
- set varn=%var:*:=%
- :lis
- set wjj=%varn:*\=%
- if not "%varn%"=="%wjj%" set varn=%wjj%&goto lis
- setlocal EnableDelayedExpansion
- for /f "delims=" %%a in ('dir /s /b /a-d "%var%"') do (
- set lj=%%~dpa
- call set lj=%%lj:!var!=%%
- md "!num!\!wjj!!lj!"2>nul
- set max=!num!\!wjj!!lj!%%~na
- if /i not "!xuhao!"=="f" (
- call :loop "%%a" "%%~xa"
- ) else move "%%a" "!num!\!wjj!!lj!%%~nxa"
- )
- for /f "delims=" %%a in ('dir/ad/b/s "%var%\*.*"^|sort /r') do rd/q "%%a"
- rd/q "%var%"
- color 0a&cls
- echo\&echo 移动完成,按 y 打开文件夹查看,按其它键退出。。。
- set /p xz=
- if /i "%xz%"=="y" start "" "%num%"
- exit
- :loop
- if exist "!max!!str!%~2" set /a str+=1&goto loop
- move %1 "!max!!str!%~2"
- goto :eof
复制代码
作者: 小强 时间: 2007-11-12 17:59
什么叫不破坏文件夹的结构
作者: youxi01 时间: 2007-11-12 18:08
根据他的意思,我猜应该是 文件夹之间的层次关系不变吧
比如:test1 是test的子文件夹,那么移动的时候还是这样,不知道解释的对不对?楼兄?
作者: 小强 时间: 2007-11-12 18:16
可是我试过了E:\nets\yxwg\便宜外挂 移动到D盘还是D:\便宜外挂,并没有创建\nets\yxwg\
作者: youxi01 时间: 2007-11-12 18:58
你要这样移的话,就不是移 "便宜外挂" ,而是移:“nets\”
作者: 随风 时间: 2007-11-12 19:16
回2楼
那样的话,你就要移动E:\nets 文件夹才对了
不破坏文件夹结构的意识,就是youxi 说的意识。我也不知该怎么表达了。呵。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |