中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 20:33
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]用批处理从文本提取文件名并删除 查看 981 回复 11
楼 主 [求助]用批处理从文本提取文件名并删除 发表于 2008-09-19 13:37 ·  中国 广东 东莞 博路电信科技公司
新手上路
积分 16
发帖 7
注册 2008-09-19 13:08
17年会员
UID 126043
性别 男
状态 离线
我想實現在一個txt(比如a.txt)里輸入文件名(比如A8012.exe),我要在指定的一個總目錄(總目錄下還有很多文件夾及子文件夾)下(比如C:\test),調用a.txt并刪除裡面寫的A8012.EXE這個文件,該怎么寫批處理啊?


比如在a.txt里輸入了 A8012.exe 然後此文件在c:\test\test2\A8012.exe,那么我就要刪除此A8012.EXE 也有可能在c:\test\test1\下也有這個文件名,則都要刪除。請問各位大大,這個怎么寫啊?如果在a.txt输入的是一个文件夹名,则将对总目录下的同此文件夹删除。

[ Last edited by fitchson on 2008-9-19 at 01:39 PM ]
2 发表于 2008-09-19 13:42 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
set /p file=<"C:\test\a.txt"
for /r "C:\test" %%a in (%file%) do (
del /q /f "%%a"
)
3 发表于 2008-09-19 13:45 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
要求变的真快,又加了文件夹。
@echo off
set /p file=<"C:\test\a.txt"
for /r "C:\test" %%a in (%file%) do (
del /q /f "%%a">nul 2>nul
rd /q /s "%%a">nul 2>nul
)
4 謝謝您 HAT 发表于 2008-09-19 13:51 ·  中国 广东 东莞 博路电信科技公司
新手上路
积分 16
发帖 7
注册 2008-09-19 13:08
17年会员
UID 126043
性别 男
状态 离线
謝謝 HAT
可以刪除文件,如果輸入的是一個文件夾名,要刪除此文件夾及其子文件夾該怎么辦?
另外可否記錄當前時間下來,因為我想做一個刪除的記錄,要查看什麽時候刪除了什麽文件的動作,可以嗎?再次謝謝您!

[ Last edited by fitchson on 2008-9-19 at 01:57 PM ]
5 Re 4楼 发表于 2008-09-19 14:05 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
set /p file=<"C:\test\a.txt"
for /r "C:\test" %%a in (%file%) do (
del /q /f "%%a">>"C:\test\a.log" 2>nul
rd /q /s "%%a">>"C:\test\a.log" 2>nul
)
6 发表于 2008-09-19 14:08 ·  中国 广东 东莞 博路电信科技公司
新手上路
积分 16
发帖 7
注册 2008-09-19 13:08
17年会员
UID 126043
性别 男
状态 离线
太感謝你了,HAT!!!
7 发表于 2008-09-19 16:36 ·  中国 广东 东莞 博路电信科技公司
新手上路
积分 16
发帖 7
注册 2008-09-19 13:08
17年会员
UID 126043
性别 男
状态 离线
Hello HAT,好像日誌沒有寫入到a.log啊?
8 发表于 2008-09-19 16:50 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
a.txt的内容是什么?路径是什么?
你的批处理内容是什么?路径是什么?
9 发表于 2008-09-19 17:19 ·  中国 广东 东莞 博路电信科技公司
新手上路
积分 16
发帖 7
注册 2008-09-19 13:08
17年会员
UID 126043
性别 男
状态 离线
HAT,這一句 del /q /f "%%a">>"C:\test\a.log" 2>nul 是不是把日誌記錄寫入到a.log里,但是 我執行成功了以後,a.log卻是0kb,為空
10 发表于 2008-09-19 17:28 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
>"C:\test\a.log" type nul
set /p file=<"C:\test\a.txt"
for /r "C:\test" %%a in (%file%) do (
>>"C:\test\a.log" echo.%%a
del /q /f "%%a" 2>nul
rd /q /s "%%a" 2>nul
)
11 发表于 2008-09-19 18:21 ·  中国 广东 东莞 博路电信科技公司
新手上路
积分 16
发帖 7
注册 2008-09-19 13:08
17年会员
UID 126043
性别 男
状态 离线
HAT大哥:
還要麻煩你一下。我現在測試的文件是c:\test\2\2.txt,我在a.txt里也輸入了2.txt
執行了bat以後,a.log里記錄的日誌是如下內容及格式:
C:\test\2.txt
C:\test\2\2.txt.C:\test\2.txt
這是怎么回事啊?
12 发表于 2008-09-19 19:11 ·  中国 广东 东莞 博路电信科技公司
新手上路
积分 16
发帖 7
注册 2008-09-19 13:08
17年会员
UID 126043
性别 男
状态 离线
HAT大哥:分享一下,我研究的結果,呵呵:
@echo off
echo =========================================================== >> C:\test\a.log
set DATET=%date% %time%
echo 程序開始運行,時間:%DATET% >> C:\test\a.log
set /p file=<"C:\test\a.txt"
for /r "C:\test" %%a in (%file%) do (
if exist %%a (
del /q /f "%%a" 2>nul
rd /q /s "%%a" 2>nul
echo.%%a >>"C:\test\a.log"
)
)
echo 程序運行結束,時間:%DATET% >> C:\test\a.log
echo =========================================================== >> C:\test\a.log
论坛跳转: