无忧启动论坛

标题: 高手请帮忙看看这个批处理防删文件夹[已解决] [打印本页]

作者: philon    时间: 2008-6-28 15:59
标题: 高手请帮忙看看这个批处理防删文件夹[已解决]
我希望把这个批处理放到任何一个我需要的目录下,执行批处理后,在该目录下新建一个防删文件夹sm.并把该目录下所有的文件和文件夹复制到这个防删文件夹sm.中。用copy只能复制文件无法复制文件夹。用xcopy该如何处理?请高手指点!内容如下:

@echo off&mode con cols=50 lines=12
title 创建或删除一个私密文件夹
if not exist sm..\nul (
md sm..\
color 5a&cls&echo.&echo 私密文件夹已创建!文件将装入私密文件夹中...&ping/n 2 127.1>nul
echo 正在复制文件...  
copy %CurDir% * sm..\>nul 2>nul
) else (
rd /s/q sm..\
color 5e&cls&echo.&echo 私密文件夹已删除!&ping/n 2 127.1>nul
)
color 5b&cls&echo.&echo 重复执行重新创建或删除!&ping/n 2 127.1>nul

我在非常批处理论坛和dos联盟论坛发表帖子咨询也是没有很好的答案,希望无忧的高手们看看。

[ 本帖最后由 philon 于 2008-6-29 01:18 AM 编辑 ]
作者: lianjiang    时间: 2008-6-28 16:32
dos联盟论坛没有得到答案的话,估计这里也够呛。呵呵。



作者: philon    时间: 2008-6-28 16:36
咱这儿不是有一个葛明阳大侠吗??gmy?
作者: lianjiang    时间: 2008-6-28 17:00
dos联盟应是国内dos方面水平最高的论坛吧。
呵呵。
作者: xypcmac    时间: 2008-6-28 18:32
老早就在联盟看到你的帖子了,没回帖也是有原因的,没有完美的方法(注意:是完美,不是没办法)。

首先,我要说的是,建立这样的文件夹,复制文件是完美的,但如果有文件夹需要复制,那么会自动生成你所建畸形目录的派生目录,与你的畸形目录并排在同一目录。

我举个例子:如果你建立的是 “sm.” 畸形目录,那么就会生成 sm 文件夹。这时你可以随意打开这两个文件夹,但也可以随意删除一个,其实删除的还是 sm 文件夹。删除了sm文件夹也就删除了复制进去的所有文件和文件夹。我想,这就不是你所要达到的目的了。所以有了开头的话...
作者: xypcmac    时间: 2008-6-28 18:38
这样也就没有了意义...
作者: netwinxp    时间: 2008-6-28 18:38
我记得DOS的功能调用可以修改文件夹名让其变成有代点的。
至于P处理大虾,namejm就是其中一个,不过好久没看到人影了:)

[ 本帖最后由 netwinxp 于 2008-6-28 06:40 PM 编辑 ]
作者: xypcmac    时间: 2008-6-28 18:47
原帖由 netwinxp 于 2008-6-28 06:38 PM 发表
我记得DOS的功能调用可以修改文件夹名让其变成有代点的。
至于P处理大虾,namejm就是其中一个,不过好久没看到人影了:)


namejm 不也是联盟过来的吗?
作者: netwinxp    时间: 2008-6-28 18:48
联盟的前斑竹,人才也:)
作者: xypcmac    时间: 2008-6-28 19:01
哈哈!这个嘛!我认为你同样人才也...
作者: netwinxp    时间: 2008-6-28 19:04
承蒙兄弟看得起:)有空的话到水坛捧捧场,做了板猪只好到处拉人入伙^_^
作者: lianjiang    时间: 2008-6-28 19:37
开始看到dos联盟那都没解决的问题,估计比较难,就没想试。

不过刚才试了一下,似乎问题还是很容易解决的。
只是效率有点低。需要复制两次文件,删除一次文件。
即多出一次复制与删除。

讲一下思路,我想脚本的书写对你应该很容易。

1,复制所有文件(含目录)到其他位置。
2,建畸形目录
3,复制到畸形目录
4,删除1中复制的文件
作者: lianjiang    时间: 2008-6-28 19:46
贴个图。





snap0142.jpg (65.4 KB, 下载次数: 99)

snap0142.jpg

作者: xypcmac    时间: 2008-6-28 21:08
联盟已经有人写出类似的方法了

[ 本帖最后由 xypcmac 于 2008-6-28 09:10 PM 编辑 ]
作者: lianjiang    时间: 2008-6-28 21:25
去看了一下批处理高手fastslz的帖子,没仔细看。不过似乎没不要那么复杂。呵呵。
简单的几行就能搞定了。
作者: xypcmac    时间: 2008-6-28 21:47
不错...!我也没有细看,老实说,也看不太懂。可能他想直接在当前目录复制同时过滤吧!

[ 本帖最后由 xypcmac 于 2008-6-28 09:51 PM 编辑 ]
作者: philon    时间: 2008-6-29 01:10
谢谢大家,联盟的朋友已经帮助我解决了。我自己稍微又改动了一下。
我的p文件为:防删文件夹.bat
要创建的文件夹叫:私密文件夹..\
把当前目录下除防删文件夹.bat和私密文件夹..\以外的所有文件、文件夹复制到私密文件夹..\中。我修改的了fastslz兄的代码如下:
@echo off&mode con cols=80 lines=12
setlocal enabledelayedexpansion
set CurDir=%~dp0
title 创建或删除一个私密文件夹
if not exist 私密文件夹..\nul (
md 私密文件夹..\
color 5a&cls&echo.&echo 私密文件夹已创建!当前目录下的所有内容将被拷贝到私密文件夹中...&ping/n 2 127.1>nul
for /f "delims=*" %%a in ('dir/ad/s/b "%CurDir%"^|findstr /i /v "\私密文件夹."') do md "%CurDir%私密文~1\%%~nxa"
for /f "delims=*" %%i in ('dir/a-d/s/b "%CurDir%"^|findstr /i /v "\防删文件夹. "') do (
    set "SourceFile=%%i"
    set "DestinationFile=!SourceFile:%CurDir%=!"
    call :xxxx "!SourceFile!" "%CurDir%私密文~1\!DestinationFile!"
)
ping/n 2 127.1>nul
start "" "%CurDir%私密文件夹..\"
) else (
rd /s/q 私密文件夹..\
color 5e&cls&echo.&echo 私密文件夹已删除!&ping/n 2 127.1>nul
)
color 5b&cls&echo.&echo 重复执行重新创建或删除!&ping/n 3 127.1>nul
exit

:xxxx
cls&echo 正在复制文件%status%
xcopy /y/h/r "%~1" "%~dp2" >nul
set status=%status%.
goto:eof

注,虽然没什么大的用处,但使我学习了一些东西,再次感谢几位热心的朋友!

[ 本帖最后由 philon 于 2008-6-29 01:14 AM 编辑 ]
作者: jh1688    时间: 2008-8-5 03:56
楼主,建类似的文件夹实际没有意义!!!

会做的人都能打开,我是不会用!!!

[ 本帖最后由 jh1688 于 2008-8-5 04:05 编辑 ]




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3