经常遇到下载的文件,有很多文件夹,这些目录不需要的了,想要将所有的文件移动到同一个目录中,但是这样的文件夹太多
比如 c:\test 目录下 有 t1 t2 t3 t4 t5.....众多子目录,每个目录里面有很多文件,我就想要将这些所有的文件夹中的所有文件上移到 test目录中,而原有的子目录彻底删除
我的办法是 创建一个目录的 右键菜单项 (通过向一个高手学习,解决了附加功能到右键菜单的方法)
现在已经可以点击一个 文件夹 实现将这个文件夹的内容上移了 ,代码如下:
- @echo off
- title 欢迎使用凌霄文件夹操作助手
- color 1f
- MODE con: COLS=36 LINES=15
- reg query HKCR\Directory\shell\DirClearMove\command>nul 2>nul
- if %errorlevel%==0 goto jump
- title 安装凌霄文件夹操作助手...
- set CPath=%~0
- set CPath=%CPath:\=\\%
- echo REGEDIT4>"%TEMP%\RegYJ.reg"
- echo [HKEY_CLASSES_ROOT\Directory\shell\DirClearMove\command]>>"%TEMP%\RegYJ.reg"
- echo @="\"%CPath%\" \"%%1\"">>"%TEMP%\RegYJ.reg"
- regedit /s "%TEMP%\RegYJ.reg"
- del /q "%TEMP%\RegYJ.reg"
- echo intAnswer = Msgbox ("1.DirClearMove已添加到右键菜单中" ^& vbNewLine ^& "" ^& vbNewLine ^& "2.在目录上右击用DirClearMove查看", ok, "Jason Shaw 提示您") >"%TEMP%\inform.vbs"
- attrib +H "%TEMP%\inform.vbs"
- "%TEMP%\inform.vbs"
- del /a /f "%TEMP%\inform.vbs"
- goto end
- :jump
- cls
- set input=%1
- if %errorlevel%==1 goto end
- cls
- echo.
- echo 请按照下面的提示选择功能
- echo.
- echo.
- echo a、彻底清空所选文件夹下所有内容
- echo.
- echo b、所选文件夹下所有内容移至上级目录
- echo.
- echo c、退出
- echo.
- :cho
- set select=
- set /p select=请选择(a/b/c):
- if /i "%select%"=="a" goto clean
- if /i "%select%"=="b" goto upward
- if /i "%select%"=="c" goto end
- echo 输入错误!请按照提示选择输入a/b/c
- echo 按任意键重新选择...&pause>nul
- goto cho
- exit
- :clean
- cls
- set b=
- echo Wsh.Echo MsgBox("您要彻底清空的文件夹为:"^&Chr(13)^&Chr(10)^&Chr(13)^&Chr(10)^&%input%^&Chr(13)^&Chr(10)^&Chr(13)^&Chr(10)^&"清空后不能恢复!请确认无误",33,"重要提醒") >"%TEMP%\tmp.vbs"
- attrib +H "%TEMP%\tmp.vbs"
- for /f %%a in ('cscript "%TEMP%\tmp.vbs" //nologo //e:vbscript') do set "b=%%a"
- del /q /f /ah "%TEMP%\tmp.vbs"
- if %b%==2 goto end
- echo 正在执行清空,请稍等...
- attrib -s -h -r %input%\*.* && del %input%\*.* /q>nul 2>nul
- dir %input% /ad /b /s>del.txt
- for /f "tokens=*" %%i in (del.txt) do rd "%%i" /s /q>nul 2>nul
- del del.txt /s /q>nul
- echo.
- echo 成功清空所选文件夹!按任意键退出!&pause>nul
- exit
- :upward
- cls
- set b=
- echo Wsh.Echo MsgBox("您要上移的文件夹为:"^&Chr(13)^&Chr(10)^&Chr(13)^&Chr(10)^&%input%^&Chr(13)^&Chr(10)^&Chr(13)^&Chr(10)^&"上移后将被彻底删除!请确认无误",33,"重要提醒") >"%TEMP%\tmp.vbs"
- attrib +H "%TEMP%\tmp.vbs"
- for /f %%a in ('cscript "%TEMP%\tmp.vbs" //nologo //e:vbscript') do set "b=%%a"
- del /q /f /ah "%TEMP%\tmp.vbs"
- if %b%==2 goto end
- echo 正在执行上移,请稍等...
- rem xcopy所有文件夹下内容及其属性
- xcopy /e /h /r /k /a %input% %input%\..>nul
- rem 彻底删除所选文件夹
- rd %input% /s /q
- echo.
- echo 成功上移所选文件夹内容!按任意键退出!&pause>nul
- exit
- :end
- exit
复制代码
但是 有几个问题无法解决,
1、每次只能点击一个文件夹 要将所有文件夹一起操作如何实现呢?
2、现在的程序运行时有个dos窗口,如何能将这个彻底隐藏,而不影响我中间的确认过程
急切盼望有高手帮忙解决这个问题,bow! |