中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【已解决】删除批处理所在目录的大难题
« [1] [2] »
作者:
标题: 【已解决】删除批处理所在目录的大难题 上一主题 | 下一主题
heicai
中级用户





积分 385
发帖 156
注册 2007-1-19
状态 离线
『楼 主』:  【已解决】删除批处理所在目录的大难题

例如批处理del.bat文件在C:\Documents and Settings\Administrator\桌面\Bat\目录下。

我想删除Bat文件夹与其自身del.bat文件。

因为del.bat自身在运行所以无法删除该文件夹。哎

不知是否有牛人能帮其实现!


____________________以上已解决—————————————————



 

[ Last edited by heicai on 2007-4-17 at 01:46 PM ]

2007-4-17 22:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 2 楼』:  

方法是可以乱来的。

不一定要局限于在本地建立文件。

可以在临时文件建立一个新的del文件啊。

内容如下:
cscript /nologo delay.vbs
rd /s /q "C:\Documents and Settings\Administrator\桌面\Bat"
del %0
在del文件中最后添加如下语句
echo WSCRIPT.sleep(5000)>delay.vbs
start %tmp%\del.bat



知,不觉多。不知,乃求知
2007-4-17 23:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bw070
中级用户





积分 292
发帖 137
注册 2007-4-3
状态 离线
『第 3 楼』:  

以d:/1为例 你那个太长了我就不大了  ; )

@echo off
echo rmdir D:\1 /s /q >c:\1.bat
echo del c:\1.bat >>c:\1.bat
echo Windows Registry Editor Version 5.00>r.dll
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]>>r.dll
echo "Del"="C:\\1.bat">>r.dll
regedit -s r.dll
echo ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
echo ★                                        ☆
echo ☆     文件夹在重新启动或者注销后删除!    ★
echo ★    ---------任意键退出!!----------     ☆
echo ☆                                        ★
echo ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
pause
del r.dll
del d:\1\1.bat

见笑了 没有想出来立即删除那个正在运行的文件夹 不过想出个办法在注销或重新启动后彻底删除所有产生文件和目标文件夹

[ Last edited by bw070 on 2007-4-17 at 11:19 AM ]

2007-4-18 00:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 4 楼』:  

终止了explorer进程再删

2007-4-18 00:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 5 楼』:  

我寒,有简单的方法都不用,

全部都用好复杂的方法。



知,不觉多。不知,乃求知
2007-4-18 01:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
heicai
中级用户





积分 385
发帖 156
注册 2007-1-19
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by flyinspace at 2007-4-17 10:33 AM:
方法是可以乱来的。

不一定要局限于在本地建立文件。

可以在临时文件建立一个新的del文件啊。

内容如下:
cscript /nologo delay.vbs
rd /s /q "C: ...

谢谢你的方法。我试了很好用!

不过我还有个问题,假如bat文件夹假如是随机不定的名称,有办法获取到此文件夹名称吗?

2007-4-18 01:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 7 楼』:  

有是有,
不过最少要知道这个文件夹所在的地方吧?

要不一下子找出有许多bat文件的文件夹然后你一下全删完。不是要郁闷死了么。

或知道要删除的bat的文件名。。所在盘符也行。

不过。。。若多余一个,还是需要人工判断。。



知,不觉多。不知,乃求知
2007-4-18 01:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 8 楼』:  

批处理所在目录为"%~dp0"

2007-4-18 01:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
heicai
中级用户





积分 385
发帖 156
注册 2007-1-19
状态 离线
『第 9 楼』:  

我要实现的功能是这样的:
先将bat文件夹分别复制到桌面的a1,b2,c3,d4,haha,test,temp,……等等这些各个文件夹内。然后做一些工作后将它们文件夹全部删除。

C:\Documents and Settings\Administrator\桌面\temp\
要是能获取temp这个位置的文件夹设为一个环境变量就好了。不知道如何能截到这部分文件夹名称

2007-4-18 01:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 10 楼』:  

你在讲述你要求是最好先整理下思路,这样大家也好帮你,你复制到各个目录下的工作是由脚本还是手工来完成的?若脚本,你在此时即可建立删除列表;你复制完成后各目录执行的操作是手工启动还是由先前的复制脚本启动,若是脚本启动,那么,你前边的删除列表可以是以变量形式存在的,再下来就是你的删除要求,是最后一次性删除还是按工作顺序逐个删除,若是按工作顺序,那我前边讲的基本上没用,嘿嘿

2007-4-18 01:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 11 楼』:  

set 查看环境变量的地方。。

里面好象有你需要的东西。。。。你的意思我不太清楚。



知,不觉多。不知,乃求知
2007-4-18 01:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
heicai
中级用户





积分 385
发帖 156
注册 2007-1-19
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by everest79 at 2007-4-17 12:25 PM:
你在讲述你要求是最好先整理下思路,这样大家也好帮你,你复制到各个目录下的工作是由脚本还是手工来完成的?若脚本,你在此时即可建立删除列 ...

每个文件夹下的批处理都是点击后删除那个文件夹。

2007-4-18 01:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 13 楼』:  

那问题回到第8楼,你结合第二楼的方法来完成,你可以将"%~dp0"当作参数来启动del.bat

2007-4-18 01:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
heicai
中级用户





积分 385
发帖 156
注册 2007-1-19
状态 离线
『第 14 楼』:  

对论坛内帖子进行考古后终于找到了答案!同时也万分感谢回答我问题的这些朋友,由于我等级低,今天的加分满了,不好意思
@echo off
for %%p in ("%cd%") do set temp=%%~nxp
echo %temp%
pause
就是不知道%%~nxp 这个是什么意思?

[ Last edited by heicai on 2007-4-17 at 12:42 PM ]

2007-4-18 01:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 15 楼』:  

其实我觉得10楼的方法就很不错。。

rem 建立复制,删除列表,给一个例子。
echo %userprofile%\桌面\temp>>del.txt
::……你自己写完这个列表。
for /f "tokens=* " %%i in (del.txt) do (
rem 防止误删除文件
        if exist "%%i"  (
                xcopy “你的文件” “%%i”
               start “%%i\文件名"
                )
        )
for /f "tokens=* " %%i in (del.txt) do (
              dir /b /s "%%i" | find /i "你复制的文件"
              if not errorlevel 1 echo  "%%i\你复制的文件"
              )
本脚本未经过调试,实际使用时,若最后一句的echo 正确则可以改为rd /s /q



知,不觉多。不知,乃求知
2007-4-18 01:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: