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

[文件操作] 【练习-024】批处理整理文件夹

出题目的:
  通过解题灵活了解并掌握文件处理技巧
加分原则:
  1 思路新颖基分5分
  2 代码高效基分4分
  3 代码简洁基分3分
  4 代码通用基分2分
  5 无临时文件基分1分
  6 完美代码加15分
题目如下:
  有个文件夹test,内有bmp、txt、bat文件若干,其中有批处理文件test.bat(见图一),
而且txt文件中内容相似(见图二),要求运行test.bat将文件夹中所有的bmp文件按照数字
顺序重命名为jpg文件,同时将所有的txt文件合成为一个new.txt文件,并将其它的bat文件删
除(见图三)。
图一

图二
表一.txt
  1. 494088 后付 133.25 0102968
  2. 493698 后付 224.57 0100335
  3. 395999 后付 273.62 0099321
  4. 612520 后付 187.65 0099041
  5. 612491 后付 130.63 0098080
  6. 626600 后付 145.11 0096546
  7. 618432 后付 284.2 0096239
  8. 615279 后付 119.84 0095231
  9. 622966 后付 169.68 0092673
  10. 618529 后付 147.9 0092283
  11. 628222 后付 137.28 0090872
  12. 492886 后付 123.73 0090815
  13. 610362 后付 137.15 0089407
  14. 612763 后付 202.06 0088647
  15. 620589 后付 127.68 0088365
复制代码
表二.txt
  1. 343262 后付 131.53 0086329
  2. 618776 后付 153.28 0085317
  3. 619570 后付 252.39 0084439
  4. 618483 后付 351.45 0081672
  5. 625811 后付 172.05 0081529
  6. 618500 后付 187.7 0081528
  7. 611873 后付 227.85 0079577
  8. 619956 后付 106.04 0077187
  9. 612056 后付 110.69 0077183
  10. 493133 后付 164.62 0076405
  11. 394888 后付 258.5 0076298
  12. 629606 后付 122.31 0072679
  13. 690006 后付 134.3 0072228
  14. 626701 后付 307.44 0071388
  15. 611456 后付 102.45 0070326
  16. 355327 后付 206.24 0069721
  17. 620328 后付 111.79 0068989
  18. 259899 后付 116.35 0068563
复制代码
表三.txt
  1. 211118 后付 253.01 0067607
  2. 627578 后付 135.44 0066181
  3. 297315 后付 231.1 0065231
  4. 621628 后付 359.76 0064715
  5. 618428 后付 1088.61 0061200
  6. 617351 后付 458.5 0061199
  7. 396268 后付 334.67 0060623
  8. 631772 后付 157.91 0058373
  9. 610859 后付 103.05 0057156
  10. 672123 后付 180.48 0054423
  11. 210009 后付 270.98 0054200
  12. 298918 后付 227.17 0053451
  13. 396038 后付 592.88 0053417
  14. 618999 后付 628.64 0053217
  15. 616188 后付 138 0051053
复制代码
图三

new.txt
  1. 211118 后付 253.01 0067607
  2. 627578 后付 135.44 0066181
  3. 297315 后付 231.1 0065231
  4. 621628 后付 359.76 0064715
  5. 618428 后付 1088.61 0061200
  6. 617351 后付 458.5 0061199
  7. 396268 后付 334.67 0060623
  8. 631772 后付 157.91 0058373
  9. 610859 后付 103.05 0057156
  10. 672123 后付 180.48 0054423
  11. 210009 后付 270.98 0054200
  12. 298918 后付 227.17 0053451
  13. 396038 后付 592.88 0053417
  14. 618999 后付 628.64 0053217
  15. 616188 后付 138 0051053
  16. 494088 后付 133.25 0102968
  17. 493698 后付 224.57 0100335
  18. 395999 后付 273.62 0099321
  19. 612520 后付 187.65 0099041
  20. 612491 后付 130.63 0098080
  21. 626600 后付 145.11 0096546
  22. 618432 后付 284.2 0096239
  23. 615279 后付 119.84 0095231
  24. 622966 后付 169.68 0092673
  25. 618529 后付 147.9 0092283
  26. 628222 后付 137.28 0090872
  27. 492886 后付 123.73 0090815
  28. 610362 后付 137.15 0089407
  29. 612763 后付 202.06 0088647
  30. 620589 后付 127.68 0088365
  31. 343262 后付 131.53 0086329
  32. 618776 后付 153.28 0085317
  33. 619570 后付 252.39 0084439
  34. 618483 后付 351.45 0081672
  35. 625811 后付 172.05 0081529
  36. 618500 后付 187.7 0081528
  37. 611873 后付 227.85 0079577
  38. 619956 后付 106.04 0077187
  39. 612056 后付 110.69 0077183
  40. 493133 后付 164.62 0076405
  41. 394888 后付 258.5 0076298
  42. 629606 后付 122.31 0072679
  43. 690006 后付 134.3 0072228
  44. 626701 后付 307.44 0071388
  45. 611456 后付 102.45 0070326
  46. 355327 后付 206.24 0069721
  47. 620328 后付 111.79 0068989
  48. 259899 后付 116.35 0068563
复制代码

[ 本帖最后由 batman 于 2008-9-24 11:55 编辑 ]
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
***共同提高***

不是说重命名为jpg文件吗,怎么你的截图还是bmp文件?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

表二、表三 怎么没了?~建议BATMAN兄把三个文本的内容直接复制上来好了~既能节省论坛空间,接题人也可不必一个一个自己生成三个文件。
心绪平和,眼藏静谧。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd 4>new.txt
  4. set n=0
  5. for /f "delims=" %%a in ('dir /b *.txt') do (
  6. copy new.txt+%%a new1.txt
  7. del %%a
  8. del new.txt
  9. ren new1.txt new.txt
  10. echo.>>new.txt
  11. )
  12. for /f "delims=" %%a in ('dir /b *.bmp') do (
  13. set /a n+=1
  14. ren %%a !n!.jpg
  15. )
  16. for /f "delims=" %%a in ('dir /b *.bat') do (
  17. if not "%%a"=="test.bat" del %%a
  18. )
复制代码

TOP

楼上的三个for是不是可以合为一个for再将代码简化点就ok了。
***共同提高***

TOP

是啊,可以合在一起,怎一时每想到呢?多谢。简化如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd 4>new.txt
  4. set n=0
  5. for %%i in (txt bmp bat) do (
  6.         for /f "delims=" %%a in ('dir /b *.%%i') do (
  7.                 if "%%i"=="txt" (copy new.txt+%%a new1.txt
  8.                         del %%a
  9.                         del new.txt
  10.                         ren new1.txt new.txt
  11.                         echo.>>new.txt)
  12.                 if "%%i"=="bmp" (set /a n+=1&ren %%a !n!.jpg)
  13.                 if "%%i"=="bat" (if not "%%a"=="test.bat" del %%a)
  14. ))
复制代码

[ 本帖最后由 shqf 于 2008-9-24 21:54 编辑 ]
1

评分人数

TOP

楼上还是多了个for..............
***共同提高***

TOP

应该可以一个 for

TOP

for %%i in (txt bmp bat)
这个循环好委屈。。。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

我来一个
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b *.txt *.bmp *.bat') do (
  3.    if "%%~xi"==".txt" (type "%%i">>"new.txt"&echo.>>new.txt&del "%%i")else (
  4.       if "%%~xi"==".bmp" (set/a n+=1&ren "%%i" "!n!.jpg")else if not "%%i"=="%~nx0" del "%%i"
  5.    )
  6. )
  7. pause
复制代码
1

评分人数

    • batman: terse的代码永远是这么漂亮PB + 15

TOP

现在给出本人的解

一个for三个if语句解决问题
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b') do (
  3.     if "%%~xi" equ ".bmp" set /a n+=1&ren %%i !n!.jpg
  4.     if "%%~xi" equ ".txt" type %%i>>new.txt&del /q %%i
  5.     if "%%~xi" equ ".bat" if "%%~ni" neq "%~n0" del /q %%i
  6. )
复制代码

[ 本帖最后由 batman 于 2008-9-25 08:07 编辑 ]
***共同提高***

TOP

官场有语:摆平就是水平,看来在批处理中:思路就是水平。学习了!

TOP

回复 11楼 的帖子

if "%%~xi" equ ".txt" type %%i>>new.txt&del /q %%i
type多个文件时,首尾会连接为一行。
心绪平和,眼藏静谧。

TOP

返回列表