中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 高手请帮忙看看这个批处理防删文件夹
« [1] [2] [3] [4] »
作者:
标题: 高手请帮忙看看这个批处理防删文件夹 上一主题 | 下一主题
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 31 楼』:  

补充
把代码里start "" D:\TMP\sm..\替换成start "" "%CurDir%sm..\"



第一高手    第二高手

2008-6-28 19:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
philon
初级用户





积分 42
发帖 19
注册 2005-12-23
状态 离线
『第 32 楼』:  

楼上,我测试了复制.cmd,还是没有把空文件夹复制到sm..\中

[ Last edited by philon on 2008-6-28 at 08:24 PM ]

2008-6-28 20:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 33 楼』:  

用/e也不行?

  /E           Copies directories and subdirectories, including empty ones.
               Same as /S /E. May be used to modify /T.



2008-6-28 20:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
philon
初级用户





积分 42
发帖 19
注册 2005-12-23
状态 离线
『第 34 楼』:  

是的,加了/e后,也没有复制过去,而且出现了不能进行周期性复制的提示,复制过去的只有非空目录和它里面的文件,当前目录下的文件都没有复制过去

2008-6-28 20:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 35 楼』:  

有必要处理空文件夹吗?
>test.txt echo.
>"test 1.log" echo.
md "test 文件夹"
md "test 文件夹.ddd"
copy /y *.txt "test 文件夹"
copy /y *.log "test 文件夹"
cls&@echo 测试文件及文件夹已创建,按任意键继续. . .&pause>nul
@rem 实际应用上面部分去掉

@echo off&mode con cols=80 lines=12
setlocal enabledelayedexpansion
set CurDir=%~dp0
title 创建或删除一个私密文件夹
if not exist sm..\nul (
md sm..\
color 5a&cls&echo.&echo 私密文件夹已创建!文件将装入私密文件夹中...&ping/n 2 127.1>nul
for /f "delims=*" %%a in ('dir/ad/s/b "%CurDir%"^|findstr /i /v "\sm."') do md "%CurDir%sm6b7e~1\%%~nxa"
for /f "delims=*" %%i in ('dir/a-d/s/b "%CurDir%"^|findstr /i /v "\sm. .bat .cmd"') do (
    set "SourceFile=%%i"
    set "DestinationFile=!SourceFile:%CurDir%=!"
    call :xxxx "!SourceFile!" "%CurDir%sm6b7e~1\!DestinationFile!"
)
ping/n 2 127.1>nul
start "" "%CurDir%sm..\"
) 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
exit

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


   此帖被 +2 点积分    点击查看详情   
评分人:【 philon 分数: +2  时间:2008-6-28 23:32




第一高手    第二高手

2008-6-28 21:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
philon
初级用户





积分 42
发帖 19
注册 2005-12-23
状态 离线
『第 36 楼』:  

fastslz
你真是高手,非常感谢!这次好了。达到了我预想的目的!再次感谢~
我把  cls&echo 正在复制文件 "%~1" ......  改成了 cls&echo 正在复制文件 ......
哈哈

2008-6-28 21:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xypcmac
初级用户





积分 167
发帖 80
注册 2005-11-7
状态 离线
『第 37 楼』:  



  Quote:
Originally posted by HAT at 2008-6-28 17:34:
加个fox循环排除sm..\,然后再利用xcopy /i,也许可以实现,先吃饭去了,回来再讨论。

先把要复制进 “sm.” 文件夹的文件、文件夹复制到其它地方然后再复制回来也一样。

2008-6-28 21:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 38 楼』:  



  Quote:
Originally posted by philon at 2008-6-28 21:22:

我把  cls&echo 正在复制文件 "%~1" ......  改成了 cls&echo 正在复制文件 ......
哈哈


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




第一高手    第二高手

2008-6-28 22:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
philon
初级用户





积分 42
发帖 19
注册 2005-12-23
状态 离线
『第 39 楼』:  

再请教一下,我用您的代码后,不能更改要创建的文件夹名字?sm不能换成别的名字?比如wd或者干脆叫私密文件夹吗?是不是和那个6b7e~1有关啊,它是干吗用的?等待您的答复。

2008-6-28 22:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 40 楼』:  

汗水,你还没有搞清楚sm6b7e~1是怎么来的?
12楼讲的很明白啊,dir /x



2008-6-28 23:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xypcmac
初级用户





积分 167
发帖 80
注册 2005-11-7
状态 离线
『第 41 楼』:  

看图:




2008-6-28 23:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
philon
初级用户





积分 42
发帖 19
注册 2005-12-23
状态 离线
『第 42 楼』:  

是啊,就是没法把sm改成别的名字。

2008-6-28 23:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 43 楼』:  


@echo off&mode con cols=70 lines=12
setlocal enabledelayedexpansion
set CurDir=%~dp0
color 5b&cls&echo.
set /p Name=输入一个文件夹名!不支持带空格文件夹名  
if not defined Name color 0c&cls&echo.&echo 你没有输入任何字符!&&ping/n 3 127.1>nul&exit
title 创建或删除一个私密文件夹
if not exist %Name%..\nul (
        md "%Name%..\"
        for /f "skip=1 tokens=4*" %%a in ('dir/ad/x "%CurDir%%Name%.*"') do if not defined ShortName set "ShortName=%%a"
        color 5a&cls&echo.&echo 私密文件夹已创建!文件将装入私密文件夹中...&ping/n 2 127.1>nul
        for /f "delims=*" %%a in ('dir/ad/s/b "%CurDir%"^|findstr /i /v "\%Name%."') do md "%CurDir%!ShortName!\%%~nxa"
        for /f "delims=*" %%i in ('dir/a-d/s/b "%CurDir%"^|findstr /i /v "\%Name%. .bat .cmd"') do (
            set "SourceFile=%%i"
            set "DestinationFile=!SourceFile:%CurDir%=!"
            call :xxxx "!SourceFile!" "%CurDir%!ShortName!\!DestinationFile!"
        )
        ping/n 2 127.1>nul
        start "" "%CurDir%%Name%..\"
) else (
        rd /s/q "%Name%..\"
        color 5e&cls&echo.&echo 私密文件夹已删除!&ping/n 2 127.1>nul
)
color 5b&cls&echo.&echo 重复执行重新创建或删除!&ping/n 2 127.1>nul
exit

:xxxx
if not defined count set count=0
if %count% gtr 50 set status=.&set count=1
cls&echo 正在复制文件%status%..
xcopy /y/h/r "%~1" "%~dp2" >nul
set status=%status%.&set /a count+=1
goto:eof
当Name变量没有定义或定义为空格字符时 rd /s/q %Name%..\将执行删除父目录里所有文件夹,任何损失和本人无关,所以请不要随便更改代码



第一高手    第二高手

2008-6-28 23:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 44 楼』:  

其实这种文件夹也好删除的, 称不上私密文件夹。

因为就像12楼说的, dir/x 什么都出来了。

比如 md g..\  其实就可以 cd ge276~1, 然后随便你怎么搞了。道理和 sm6b7e~1一样



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-6-28 23:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
philon
初级用户





积分 42
发帖 19
注册 2005-12-23
状态 离线
『第 45 楼』:  

感谢hat兄,感谢fastslz兄,感谢12楼的朋友。
我终于做成了我需要的p文件。我的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
注,虽然没什么大的用处,但使我学习了一些东西,再次感谢几位热心的朋友!

2008-6-29 01:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: