中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-15 00:33
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【已解决】删除批处理所在目录的大难题
楼 主 【已解决】删除批处理所在目录的大难题 发表于 2007-04-17 22:45 ·  中国 浙江 电信
中级用户
★★
积分 385
发帖 156
注册 2007-01-19 02:32
UID 76955
性别 男
状态 离线
例如批处理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 ]
2 发表于 2007-04-17 23:33 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
方法是可以乱来的。

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

可以在临时文件建立一个新的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
知,不觉多。不知,乃求知
3 发表于 2007-04-18 00:14 ·  中国 安徽 蚌埠 电信
中级用户
★★
积分 292
发帖 137
注册 2007-04-03 01:59
UID 83758
性别 男
状态 离线
以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 >>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 ]
4 发表于 2007-04-18 00:34 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
UID 74552
性别 男
状态 离线
终止了explorer进程再删
5 发表于 2007-04-18 01:07 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
我寒,有简单的方法都不用,

全部都用好复杂的方法。
知,不觉多。不知,乃求知
6 发表于 2007-04-18 01:12 ·  中国 浙江 电信
中级用户
★★
积分 385
发帖 156
注册 2007-01-19 02:32
UID 76955
性别 男
状态 离线
Originally posted by flyinspace at 2007-4-17 10:33 AM:
方法是可以乱来的。

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

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

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

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

不过我还有个问题,假如bat文件夹假如是随机不定的名称,有办法获取到此文件夹名称吗?
7 发表于 2007-04-18 01:16 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
有是有,
不过最少要知道这个文件夹所在的地方吧?

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

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

不过。。。若多余一个,还是需要人工判断。。
知,不觉多。不知,乃求知
8 发表于 2007-04-18 01:19 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
UID 74552
性别 男
状态 离线
批处理所在目录为"%~dp0"
9 发表于 2007-04-18 01:20 ·  中国 浙江 电信
中级用户
★★
积分 385
发帖 156
注册 2007-01-19 02:32
UID 76955
性别 男
状态 离线
我要实现的功能是这样的:
先将bat文件夹分别复制到桌面的a1,b2,c3,d4,haha,test,temp,……等等这些各个文件夹内。然后做一些工作后将它们文件夹全部删除。

C:\Documents and Settings\Administrator\桌面\temp\
要是能获取temp这个位置的文件夹设为一个环境变量就好了。不知道如何能截到这部分文件夹名称
10 发表于 2007-04-18 01:25 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
UID 74552
性别 男
状态 离线
你在讲述你要求是最好先整理下思路,这样大家也好帮你,你复制到各个目录下的工作是由脚本还是手工来完成的?若脚本,你在此时即可建立删除列表;你复制完成后各目录执行的操作是手工启动还是由先前的复制脚本启动,若是脚本启动,那么,你前边的删除列表可以是以变量形式存在的,再下来就是你的删除要求,是最后一次性删除还是按工作顺序逐个删除,若是按工作顺序,那我前边讲的基本上没用,嘿嘿
11 发表于 2007-04-18 01:27 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
set 查看环境变量的地方。。

里面好象有你需要的东西。。。。你的意思我不太清楚。
知,不觉多。不知,乃求知
12 发表于 2007-04-18 01:30 ·  中国 浙江 电信
中级用户
★★
积分 385
发帖 156
注册 2007-01-19 02:32
UID 76955
性别 男
状态 离线
Originally posted by everest79 at 2007-4-17 12:25 PM:
你在讲述你要求是最好先整理下思路,这样大家也好帮你,你复制到各个目录下的工作是由脚本还是手工来完成的?若脚本,你在此时即可建立删除列 ...

每个文件夹下的批处理都是点击后删除那个文件夹。
13 发表于 2007-04-18 01:35 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
UID 74552
性别 男
状态 离线
那问题回到第8楼,你结合第二楼的方法来完成,你可以将"%~dp0"当作参数来启动del.bat
14 发表于 2007-04-18 01:41 ·  中国 浙江 电信
中级用户
★★
积分 385
发帖 156
注册 2007-01-19 02:32
UID 76955
性别 男
状态 离线
对论坛内帖子进行考古后终于找到了答案!同时也万分感谢回答我问题的这些朋友,由于我等级低,今天的加分满了,不好意思

@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 ]
15 发表于 2007-04-18 01:45 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
其实我觉得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
知,不觉多。不知,乃求知
论坛跳转: