标题: [文件操作] [已解决]批处理如何将内容加入一对英文引号之内再插入指定字符串? [打印本页]
作者: ygqiang 时间: 2011-6-8 21:39 标题: [已解决]批处理如何将内容加入一对英文引号之内再插入指定字符串?
网上看了一个帖子:
http://www.cnblogs.com/starspace/archive/2009/01/08/1371905.html
什么工具能寻找和删除硬盘上所有空的文件夹,或只包含空的子文件夹的文件夹?杀鸡焉用宰牛刀,其实不用任何软件,直接使用批处理命令就能实现这个目的。
第一步:进入Windows的MS-DOS窗口(Windows 2000/XP叫命令行提示符),进入要查找空文件夹的驱动器,执行:
dir /ad/b/s | sort /r >empties.bat
第二步:命令运行后,当前目录下会生成一个Empties.bat文件,其中包含了逆序排列的所有文件夹的清单。用Word或记事本打开该文件,把每一行内容分别放入一对英文引号之内,然后在每一行前面插入“rd ”前缀(rd后加一个空格)。
其中第二部,如何用bat批处理?
作者: CrLf 时间: 2011-6-8 21:46
那样一来将会很长很长,处理起来也非常慢,不如只将其作为要提取的数据看待:- @more +4 %0 >tmp
- copy /b tmp+empties.bat $
- move $ empties.bat
- exit
- @echo off
- for /f "skip=3 delims=" %%a in (%~s0) do rd "%%a"
- exit
复制代码
如果非要给每行加前缀的话,效率是个问题:- @echo off
- (for /f %%a in (empties.bat) do echo rd "%%a")>$
- move $ empties.bat
- pause
复制代码
作者: ygqiang 时间: 2011-6-8 21:56
dir /ad/b/s | sort /r >empties.bat
@echo off
(for /f %%a in (empties.bat) do echo rd "%%a")>$
move $ empties.bat
call empties.bat
del empties.bat
pause
这个方法,可以实现,但如何提高效率呢?
作者: ygqiang 时间: 2011-6-8 21:57
还有个问题,如何实现在xp系统下,当前所有存在的盘符下面,都能检测运行这个bat呢?
作者: CrLf 时间: 2011-6-8 22:03
3# ygqiang
看来我的第一条代码白发了...
作者: ygqiang 时间: 2011-6-9 01:13
- rem 删除空文件夹
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get caption') do (
- for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do rd "%%j" 1>nul 2>nul
- )
复制代码
解决了。
作者: Hello123World 时间: 2011-6-9 17:19
dir /ad/b/s | sort /r >empties.bat
上面这句代码不能获取空文件夹,你们怎么删除空文件的?
作者: CrLf 时间: 2011-6-9 17:41
7# Hello123World
一刀切,空文件夹能删,非空删不了:
for /f .... do rd %%i 2>nul
作者: Hello123World 时间: 2011-6-9 17:53
原来是利用了rd命令不能删除非空文件夹的特性——精髓啊!
作者: CrLf 时间: 2011-6-9 18:07
本帖最后由 zm900612 于 2011-6-9 19:27 编辑
9# Hello123World
嗯,所以对命令的理解越深,方法就越多、越简洁直接,我一向很喜欢这类暴力的手段,因为它简单有效,粗中有细,能够充分利用命令的特点来简单地进行正向或反向的筛选,这是比我们专门用代码去人为判断要快很多的。
自恋一下,给你看一段我自认为构思精巧的小代码:- @echo off&setlocal enabledelayedexpansion
- for /r %%a in (*.*) do (
- del /f /s "%%~nxa" 3>>"%%a"
- ) 2>nul 4>>%~s0
- pause
复制代码
利用句柄会占用文件的特性删除子目录下多余的同名文件
作者: Hello123World 时间: 2011-6-9 19:21
10# zm900612
句柄什么的现在我还是不明白,不过这么短的代码可以实现删除同名文件的功能,不说犀利还能说什么呢?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |