Board logo

标题: [文件操作] 求助bat判断文件是否存在以及删除指定文件[有偿] [打印本页]

作者: ppzone    时间: 2020-1-9 17:06     标题: 求助bat判断文件是否存在以及删除指定文件[有偿]

各位大神请求帮忙看下
想做一个bat分为几步
第一步        判断当前文件夹是否有playnclauncher.exe(不分大小写)
第二步        删除当前文件夹下除特定文件和文件夹下的内容以外的文件
(如当前文件夹\Data\china\item\items.pak和\Data\china\item\_items.pak保留这两个文件删除data\china\item\文件夹下的其他文件)
        删除\Data\china\item文件夹下文件
        除以下文件
        \Data\china\item\items.pak
        \Data\china\item\_items.pak

        删除\Data\china\npcs文件夹下文件
        除以下文件
        \Data\china\npcs\npcs.pak
        \Data\china\npcs\_npcs.pak

        删除\Data\china\pc文件夹下文件
        除以下文件
        \Data\china\pc\pc.pak
        \Data\china\pc\pcs.pak

        删除\Data\china\Quest文件夹下文件
        除以下文件
        \Data\china\Quest\Quest.pak
        \Data\china\Quest\z_Quest.pak

        删除\Data\Items文件夹下文件
        除以下文件
        \Data\Items\Items.pak
        \Data\Items\ltemsico.pak

        删除\L10N\CHS\Data文件夹下文件
        除以下文件夹及文件
        \L10N\CHS\Data\CutScene
        \L10N\CHS\Data\fonts
        \L10N\CHS\Data\help
        \L10N\CHS\Data\Strings
        \L10N\CHS\Data\Data.pak
        \L10N\CHS\Data\datas.pak


第三步        删除完之后出一个提示框:删除完成

第四步        bat需要支持win7和win10操作系统
作者: binghejin    时间: 2020-1-9 18:45

本帖最后由 binghejin 于 2020-1-9 18:50 编辑
  1. @echo off
  2. cls
  3. if exist playnclauncher.exe (echo playnclauncher.exe文件存在) else (echo playnclauncher.exe文件不存在)
  4. set ml=Data\china\item
  5. if not exist %ml%\temp md %ml%\temp
  6. copy %ml%\items.pak %ml%\temp>nul
  7. copy %ml%\_items.pak %ml%\temp >nul
  8. del /q %ml%\*.* >nul
  9. move %ml%\temp\*.* %ml%\ >nul
  10. rd %ml%\temp >nul
  11. set ml=Data\china\npcs
  12. if not exist %ml%\temp md %ml%\temp
  13. copy %ml%\npcs.pak %ml%\temp>nul
  14. copy %ml%\_npcs.pak %ml%\temp >nul
  15. del /q %ml%\*.* >nul
  16. move %ml%\temp\*.* %ml%\ >nul
  17. rd %ml%\temp >nul
  18. set ml=Data\china\pc
  19. if not exist %ml%\temp md %ml%\temp
  20. copy %ml%\pc.pak %ml%\temp>nul
  21. copy %ml%\pcs.pak %ml%\temp >nul
  22. del /q %ml%\*.* >nul
  23. move %ml%\temp\*.* %ml%\ >nul
  24. rd %ml%\temp >nul
  25. set ml=Data\china\Quest
  26. if not exist %ml%\temp md %ml%\temp
  27. copy %ml%\Quest.pak %ml%\temp>nul
  28. copy %ml%\z_Quest.pak %ml%\temp >nul
  29. del /q %ml%\*.* >nul
  30. move %ml%\temp\*.* %ml%\ >nul
  31. rd %ml%\temp >nul
  32. set ml=Data\Items
  33. if not exist %ml%\temp md %ml%\temp
  34. copy %ml%\Items.pak %ml%\temp>nul
  35. copy %ml%\ltemsico.pak %ml%\temp >nul
  36. del /q %ml%\*.* >nul
  37. move %ml%\temp\*.* %ml%\ >nul
  38. rd %ml%\temp >nul
  39. set ml=L10N\CHS\Data
  40. if not exist %ml%\temp md %ml%\temp
  41. copy %ml%\Data.pak %ml%\temp>nul
  42. copy %ml%\datas.pak %ml%\temp >nul
  43. del /q %ml%\*.* >nul
  44. move %ml%\temp\*.* %ml%\ >nul
  45. rd %ml%\temp >nul
  46. echo 删除完成
  47. pause
复制代码
1.L10N\CHS\Data文件夹下的所有文件除了Data.pak和datas.pak之外都会被删除,L10N\CHS\Data文件夹下的其他目录及目录下的文件(如果有的话),都不动!
2.你要判断playnclauncher.exe文件是否存在,但是又没有交代如果存在干嘛,如果不存在又干嘛,所以这个代码里只是判断后显示一段文字而已。
3.代码用的是比较笨的办法,就是在相应目录下新建一个TEMP目录,将需要的文件拷贝到这个目录下,然后再删除上一级目录内的所有文件,删除完后再将需要的文件拷贝回来,并删除TEMP目录。
作者: zaqmlp    时间: 2020-1-9 18:52

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢打赏
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. if exist "playnclauncher.exe" (echo;存在) else (echo;不存在)
  7. set "fd=Data\china\item"
  8. for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
  9.     set "f="
  10.     for %%b in (
  11.         "items.pak"
  12.         "_items.pak"
  13.     ) do (
  14.         if /i "%%~nxa" equ "%%~b" set f=1
  15.     )
  16.     if not defined f del /a /f /q "%fd%\%%~nxa"
  17. )
  18. set "fd=Data\china\npcs"
  19. for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
  20.     set "f="
  21.     for %%b in (
  22.         "npcs.pak"
  23.         "_npcs.pak"
  24.     ) do (
  25.         if /i "%%~nxa" equ "%%~b" set f=1
  26.     )
  27.     if not defined f del /a /f /q "%fd%\%%~nxa"
  28. )
  29. set "fd=Data\china\pc"
  30. for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
  31.     set "f="
  32.     for %%b in (
  33.         "pc.pak"
  34.         "pcs.pak"
  35.     ) do (
  36.         if /i "%%~nxa" equ "%%~b" set f=1
  37.     )
  38.     if not defined f del /a /f /q "%fd%\%%~nxa"
  39. )
  40. set "fd=Data\china\Quest"
  41. for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
  42.     set "f="
  43.     for %%b in (
  44.         "Quest.pak"
  45.         "z_Quest.pak"
  46.     ) do (
  47.         if /i "%%~nxa" equ "%%~b" set f=1
  48.     )
  49.     if not defined f del /a /f /q "%fd%\%%~nxa"
  50. )
  51. set "fd=Data\Items"
  52. for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
  53.     set "f="
  54.     for %%b in (
  55.         "Items.pak"
  56.         "ltemsico.pak"
  57.     ) do (
  58.         if /i "%%~nxa" equ "%%~b" set f=1
  59.     )
  60.     if not defined f del /a /f /q "%fd%\%%~nxa"
  61. )
  62. set "fd=L10N\CHS\Data"
  63. for /f "delims=" %%a in ('dir /ad/b "%fd%\" 2^>nul') do (
  64.     set "f="
  65.     for %%b in (
  66.         "CutScene"
  67.         "fonts"
  68.         "help"
  69.         "Strings"
  70.     ) do (
  71.         if /i "%%~nxa" equ "%%~b" set f=1
  72.     )
  73.     if not defined f rd /s /q "%fd%\%%~nxa\"
  74. )
  75. set "fd=L10N\CHS\Data"
  76. for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
  77.     set "f="
  78.     for %%b in (
  79.         "Data.pak"
  80.         "datas.pak"
  81.     ) do (
  82.         if /i "%%~nxa" equ "%%~b" set f=1
  83.     )
  84.     if not defined f del /a /f /q "%fd%\%%~nxa"
  85. )
  86. echo;Done
  87. :end
  88. echo;%info%
  89. pause
  90. exit
复制代码

作者: Gin_Q    时间: 2020-1-10 09:26

本代码没有测试过!
  1. @echo off&rem by author gan 21:41 2020/1/9
  2. ::(findstr /c)是必须要指定参数的!
  3. set "p_i=\Data\china\item\"
  4. set "p_n=\Data\china\npcs\"
  5. set "p_p=\Data\china\pc\"
  6. set "p_Q=\Data\china\Quest\"
  7. set "p_It=\Data\Items\"
  8. set "p_d=\L10N\CHS\Data\"
  9. cd /d "%p_i%"
  10. call :del_file ./ "%p_1%items.pak" "%p_i%_items.pak"
  11. cd /d "%p_n%"
  12. call :del_file ./ "%p_n%npcs.pak" "%p_n%_npcs.pak"
  13. cd /d "%p_p%"
  14. call :del_file ./ "%p_p%pc.pak" "%p_p%pcs.pak"
  15. cd /d "%p_Q%"
  16. call :del_file ./ "%p_Q%Quest.pak" "%p_Q%z_Quest.pak"
  17. cd /d "%p_It%"
  18. call :del_file ./ "%p_It%Items.pak" "%p_It%ltemsico.pak"
  19. cd /d "%p_d%"
  20. call :max_del ./ "\L10N\CHS\Data\CutScene" "\L10N\CHS\Data\fonts" "\L10N\CHS\Data\help" "\L10N\CHS\Data\Strings" "\L10N\CHS\Data\Data.pak" "\L10N\CHS\Data\datas.pak"
  21. echo +----------+
  22. echo ^| 删除完成 ^|
  23. echo +----------+
  24. pause&exit
  25. :del_file
  26. if exist playnclauncher.exe echo playnclauncher.exe已经存在
  27. if not exist playnclauncher.exe echo playnclauncher.exe不存在
  28. for /r "%~1" %%a in (*) do (setlocal enabledelayedexpansion
  29. echo %%~pnxa|findstr /c:"%~2" >null && set /a n+=1
  30. echo %%~pnxa|findstr /c:"%~3" >null && set /a n+=1
  31. if !on! equ 1 (set /a on=0) else (del /q "%%~dpnxa")
  32. endlocal
  33. )
  34. goto :eof
  35. :max_del
  36. if exist playnclauncher.exe echo playnclauncher.exe已经存在
  37. if not exist playnclauncher.exe echo playnclauncher.exe不存在
  38. for /r "%~1" %%a in (*) do (setlocal enabledelayedexpansion
  39. echo %%~pnxa|findstr /c:"%~2" >null && set /a n+=1
  40. echo %%~pnxa|findstr /c:"%~3" >null && set /a n+=1
  41. echo %%~pnxa|findstr /c:"%~4" >null && set /a n+=1
  42. echo %%~pnxa|findstr /c:"%~5" >null && set /a n+=1
  43. echo %%~pnxa|findstr /c:"%~6" >null && set /a n+=1
  44. echo %%~pnxa|findstr /c:"%~7" >null && set /a n+=1
  45. if !on! geq 1 (set /a on=0) else (del /q "%%~dpnxa")
  46. endlocal
  47. )
  48. goto :eof
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2