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

[文件操作] 【已解决】批处理如何删除及修改具有下面特征的文件?

本帖最后由 qixiaobin0715 于 2019-9-28 09:52 编辑

文件夹中的文件均为jpg文件,文件名均为英文字母组成无空格,要求如下:
1.先将文件按文件列表重命名:
文件形式如下:
  1. awaketo.jpg
  2. awareof.jpg
  3. backandforth.jpg
  4. backaway.jpg
复制代码
按文件列表重命名,文件列表是一个txt文件,形式如下:
  1. awake to
  2. aware of
  3. back and forth
  4. back away
复制代码
文件列表都是词组,含有空格,而文件无空格,顺序不一定一致。文件数量要比列表中的数量多得多。
2.然后删除文件名由12及以上个字母组成的文件,12个字母以下的保留,文件名含有空格的文件保留。

回复 17# Batcher

要的就是这种效果。多谢多谢!!!

TOP

回复 16# qixiaobin0715


是这个意思吗
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. type nul > "重命名文件名成功的列表.txt"
  4. type nul > "被删除文件的文件名列表.txt"
  5. for /f "delims=" %%i in ('type "文件列表.txt"') do (
  6.     set "NewName=%%i"
  7.     set "NoBlank=!NewName: =!"
  8.     if exist "!NoBlank!.jpg" (
  9.         ren "!NoBlank!.jpg" "!NewName!.jpg"
  10.         >> "重命名文件名成功的列表.txt" echo "!NoBlank!.jpg" "!NewName!.jpg"
  11.         move /y "!NewName!.jpg" "D:\pic"
  12.     )
  13. )
  14. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  15.     set "file=%%~ni"
  16.     if "!file: =!" equ "!file!" (
  17.         if "!file:~12!" neq "" (
  18.             del /f /q "%%i"
  19.             >> "被删除文件的文件名列表.txt" echo "%%i"
  20.         )
  21.     )
  22. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# Batcher

等等,顺序好像有点问题。应当先重命名并移动,然后再删除符合条件的图片。这里againandagain.jpg应当重命名为again and again.jpg并移动到指定文件夹,重命名前被删除。

TOP

回复 14# Batcher

完美,速度很快,非常感谢!!!

TOP

回复 12# qixiaobin0715


试试这样可以吗
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. type nul > "重命名文件名成功的列表.txt"
  4. type nul > "被删除文件的文件名列表.txt"
  5. for /f "delims=" %%i in ('type "文件列表.txt"') do (
  6.     set "NewName=%%i"
  7.     set "NoBlank=!NewName: =!"
  8.     if exist "!NoBlank!.jpg" (
  9.         ren "!NoBlank!.jpg" "!NewName!.jpg"
  10.         >> "重命名文件名成功的列表.txt" echo "!NoBlank!.jpg" "!NewName!.jpg"
  11.         if "!NewName:~12!" neq "" (
  12.             del /f /q "!NewName!.jpg"
  13.             >> "被删除文件的文件名列表.txt" echo "!NewName!.jpg"
  14.         ) else (
  15.             move /y "!NewName!.jpg" "D:\pic"
  16.         )
  17.     )
  18. )
  19. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  20.     set "file=%%~ni"
  21.     if "!file: =!" equ "!file!" (
  22.         if "!file:~12!" neq "" (
  23.             del /f /q "%%i"
  24.             >> "被删除文件的文件名列表.txt" echo "%%i"
  25.         )
  26.     )
  27. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# terse


    顺序不一定一致,这样可能不适合楼主的情况。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# zaqmlp
不好意思,是自己的文件名列表的问题。献上红包一个。请完善功能:
1.将修改过的文件直接移到(非拷贝)新文件夹中,如D:\pic。
2.在当前文件夹中生成重命名文件名成功的列表以及被删除文件的文件名列表。

TOP

这个意思吗?
  1. @echo off & setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in ('dir /b /a-d *.jpg') do (
  3.       set /p "str="
  4.       if "!str!" neq ""  (
  5.          echo; ren %%a "!str!.jpg"
  6.       ) else (
  7.           set "file=%%~na"
  8.           if "!file: =!" equ "!file!"  if "!file:~12!" neq "" echo;del %%a
  9.       )
  10.       set "str="
  11. ))<文件列表.txt
  12. pause & exit
复制代码

TOP

回复 9# qixiaobin0715

不清楚你的情况,实测没问题, 可以联系我q
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 5# zaqmlp

back and forth好像没有重命名

TOP

回复 7# qixiaobin0715

谢没啥用,还是红包实际
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 5# zaqmlp

少量测试效果不错!谢谢了

TOP

回复 4# Batcher

win7。有是可能powershell版本低的问题。谢谢!

TOP

  1. @echo off
  2. mode con lines=3000
  3. set info=互助互利,支付宝扫码头像,感谢打赏
  4. rem 有问题,可加QQ956535081及时沟通
  5. title %info%
  6. cd /d "%~dp0"
  7. set "txtfile=列表.txt"
  8. >"%tmp%\1.t" echo;while(!WSH.StdIn.AtEndOfStream){var f=WSH.StdIn.ReadLine();WSH.echo(f.replace(/\s/g,'')+"|"+f);}
  9. for /f "tokens=1* delims=|" %%a in ('type "%txtfile%"^|cscript -nologo -e:jscript "%tmp%\1.t"') do (
  10.     if exist "%%a.jpg" (
  11.         echo;"%%a.jpg" --^> "%%b.jpg"
  12.         ren "%%a.jpg" "%%b.jpg"
  13.     )
  14. )
  15. >"%tmp%\1.t" echo;while(!WSH.StdIn.AtEndOfStream){var f=WSH.StdIn.ReadLine();if(/^^[a-z]{12,}$/i.test(f)){WSH.echo(f);}}
  16. (for /f "delims=" %%a in ('dir /a-d/b *.jpg') do echo;%%~na)>"%tmp%\t.t"
  17. for /f "delims=" %%a in ('type "%tmp%\t.t"^|cscript -nologo -e:jscript "%tmp%\1.t"') do (
  18.     echo;--^> "%%a.jpg"
  19.     del /a /f /q "%%a.jpg"
  20. )
  21. echo;%info%
  22. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

返回列表