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


    我不是楼主,感觉这个批处理很实用,所以也想着完美完美,呵呵

TOP

回复 12# wh1234567


    请问你是楼主吗?如果添加确认功能,势必会很繁琐的

TOP

本帖最后由 wh1234567 于 2012-2-4 20:53 编辑

回复 3# ivor


    在删除前加上一个确认的过程功能以防错误删除,也就是说在输入第几行或列后自动提示要删除的该行或列的数据内容,如果确认无误就按回车键进行处理,如果有误可以按某个键返回重新输入,这样就一目了然避免错误删除,可加输出备份功能

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /a-d/b/s *.txt') do (
  3.         (set n=0
  4.         for /f "delims=" %%j in ('type "%%i"') do (
  5.                 set /a n+=1
  6.                 if not "!n!"=="1" echo %%j
  7.         ))>$
  8.         move $ "%%i">nul
  9. )
复制代码

TOP

回复 7# ivor


    新年快乐,技术超前,办事认真负责,呵呵,不错

TOP

本帖最后由 apang 于 2012-2-5 22:17 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p lin=请输入要删除第几行:
  3. set/p row=请输入要删除第几列:
  4. for /f "delims=" %%i in ('dir /a-d /b /s *.txt') do (
  5.         (for /f "delims=" %%j in ('type "%%i"') do (
  6.                 set n=1&set str=&&call :loop %%j
  7.                 echo !str:~3!
  8.          ))>$
  9. (set n=0
  10.         for /f "delims=" %%k in ('type "$"') do (
  11.                 set /a n+=1
  12.                 if not "!n!"=="!lin!" echo %%k
  13.         ))>$$
  14. move $$ "%%~dpi%%~nxi"&del $
  15. )
  16. :loop
  17. if "%1"=="" goto :eof
  18. if "!n!"=="!row!" shift
  19. shift&set "str=!str!   %1"&set/a n+=1&goto loop
复制代码

TOP

  1. @echo off
  2. if not exist a md a
  3. for /f "delims=" %%i in ('dir /b *.txt') do more +1 "%%i">>"a\%%i.txt"
  4. pause
复制代码
1

评分人数

    • ivor: 在楼主主要的需求的情况下,more命令明显是 ...技术 + 1

TOP

回复 6# wh1234567


   sorry to that....问题有些路径含有空格。在我win7下没试出来,因为桌面路径没有空格。
问题已修复

TOP

本帖最后由 wh1234567 于 2012-2-4 20:10 编辑

回复 5# ivor


    第一个批处理运行后闪了一下没有处理效果,第二个运行后提示
请输入要删除的行:2
请输入要删除的列:2
系统找不到文件 C:\Document
命令语法不正确。
请按任意键继续. . .
另外楼主好像是:
三个功能的P程序:
    a、可交互地指定被删除行
    b、可交互地指定被删除列
    c、可交互的同时指定被删除的行和列
1

评分人数

TOP

回复 4# wh1234567


    请说明具体问题

TOP

回复 3# ivor


    为什么在我的电脑上运行没有效果呢?

TOP

本帖最后由 ivor 于 2012-2-5 17:32 编辑

删除所有*.txt 第一行
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /s /b *.txt') do (
  3. set indicator=nul
  4. for /f "useback delims=" %%b in ("%%a") do (
  5. echo %%b
  6. set indicator=%%a~
  7. )>>"!indicator!"
  8. move "%%a~" "%%a"
  9. )
  10. pause
复制代码
再附上多功能版,列数如果大于4请修改:delCols代码块
功能1.指定删除的行数 2.指定删除的列数 3.同时指定行数和列数
  1. @echo off & setlocal enabledelayedexpansion
  2. set /p rows=请输入要删除的行:
  3. set /p cols=请输入要删除的列:
  4. if defined rows call :delRows %rows% & pause
  5. if defined cols call :delCols %cols% & pause
  6. goto :eof
  7. :delRows
  8. for /f "delims=" %%a in ('dir /s /b *.txt') do (
  9.         set count = %1
  10.         for /f "useback delims=" %%b in ("%%a") do (
  11.                 set /a count += 1
  12.                 if !count! neq %1 echo %%b >>"%%a~"
  13.         )
  14.         move "%%a~" "%%a"
  15. )
  16. echo 已经处理完了行数
  17. goto :eof
  18. :delCols
  19. for /f "delims=" %%a in ('dir /s /b *.txt') do (
  20.         for /f "useback tokens=1-4" %%b in ("%%a") do (
  21.                         set 1=%%b
  22.                         set 2=%%c
  23.                         set 3=%%d
  24.                         set 4=%%e
  25.                         set "%1="
  26.                         echo !1!        !2!        !3!        !4! >>"%%a~"
  27.                         
  28.         )
  29.         move "%%a~" "%%a"
  30. )
  31. echo 已经处理完了列数
  32. goto :eof
复制代码
2

评分人数

    • hacker85: 谢谢你的热心帮忙,今天才看到回复,回头我 ...技术 + 1
    • wh1234567: 新年快乐,技术超前,呵呵,不错技术 + 1

TOP

删除第一行很easy了。
可交互地指定被删除行也不算很难。

可交互地指定被删除列   这个有点难度。。
可交互的同时指定被删除的行和列    难度同上

但是应该不难。。。说实话拿去给新手练手很不错哦。
等会我写代码。。。哈。我有点事先X了

TOP

返回列表