[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理实现删除指定行功能

@echo off
set /p m=请输入要删除的行
setlocal enabledelayedexpansion
del temp.txt 2>nul
for /f "tokens=*" %%i in (1.txt) do (
set /a n+=1
if !n! neq %m% echo %%i>>temp.txt
)
del 1.txt
ren temp.txt 1.txt
pause

========================

上面的代码可以实现删除a.txt文件中指定行的功能。
但现在的问题是:
1、我现在有一个文件夹,里面有N多的txt文件,文件名没有什么规律,我现在想删除每个文件的第一行,该怎么实现呢?
2、我发现这段代码在既使是删除一个文件中的第一行的时候运行效率也不是很高,关键在ren这句上吧?如果要是删除好几百个这样的文件的话,我想效率更不会太高的。怎么办呢?

上传一个文件,作为例子,大家尝试一下。

======================分割线===================
注:如果删除指定列呢?或者说可不可以通过这段代码改写出一个同时具有以下三个功能的P程序:
    a、可交互地指定被删除行
    b、可交互地指定被删除列
    c、可交互的同时指定被删除的行和列

如果困难,以分割线上方的问题为主。
谢谢。

回复 9# apang


    谢谢你的回复,我将近一步测试你的代码。有问题再请教。

TOP

回复 14# wh1234567


    没有关系,大家都是楼主,都可以针对这个问题还畅所欲言,要知道把一个软件做到尽量完美是一种享受。

TOP

回复 13# ivor


    呵呵,这个功能可以考虑一下。
如果实在繁琐的话,那就不要用P程序来实现了,用别的语言我想更合适一些,比如VBA

TOP

回复 11# apang


    再次感谢,不断地写代码,不断地突破自己,加油,向你学习。

TOP

本帖最后由 hacker85 于 2012-2-5 17:12 编辑

回复 3# ivor


    你的第二段代码似乎没有删除行的功能呢?
我测试了好些次,都只能删除列,不能删除行。请查看

而且在代码运行结束后的窗口中,最后几行的内容是这样的:
已经处理完了列数
请按任意键继续. . .
跳过了= =?      ----------->这几个字符,我在你的代码里也有看到,你赋予它的作用是什么呢?或者说在什么情况下它的显示内容不是这个。
请按任意键继续. . .

TOP

回复 9# apang


    这段代码是一个只能删除列功能的代码,问题如下:
1、文件的名字中不能有空格
2、只能一次处理一个文件。

TOP

本帖最后由 hacker85 于 2012-2-5 20:44 编辑

回复 8# 545810831


    感谢你的回复。

这个代码只实现了分割线以上的功能。

TOP

回复 11# apang


    这个代码的功能是删除所有文件的第一行。
帖子中分割线以上的功能实现了。

TOP

回复 23# ivor


   我是win7 32位旗舰。
我想这个和系统没有关系吧。

我就是把附件的文件复制了N多个
然后运行的P程序,结果第二段代码确实只有删除列的功能。

明天我再换一台机器试验一下,届时再交流。

TOP

本帖最后由 hacker85 于 2012-2-5 20:39 编辑

回复 24# cjiabing


    版主这是?

代码的功能肯定是不正确的,不过里面的“说明”部分我倒是受教了。

TOP

回复 27# apang


    好的,我去测试。

TOP

回复 9# apang


    恩哼, 不错,你这个代码的功能是正确的。

TOP

本帖最后由 hacker85 于 2012-2-6 20:42 编辑

回复 3# ivor


    第二段代码确实是没有删除行的功能,我反复测试了几次。比如删除第一行和第二列。
9楼的朋友上传了一份代码,可以实现同时删除。

TOP

回复 3# ivor


    第二段代码我放到一个64位的 win7系统中使用是正确的,可以删除行了。
但是我想不是系统多少位的原因。

可是在我家里的机器上确实是不能删除行,这是为什么呢?

TOP

返回列表