标题: [文件操作] 求助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 编辑
- @echo off
- cls
- if exist playnclauncher.exe (echo playnclauncher.exe文件存在) else (echo playnclauncher.exe文件不存在)
- set ml=Data\china\item
- if not exist %ml%\temp md %ml%\temp
- copy %ml%\items.pak %ml%\temp>nul
- copy %ml%\_items.pak %ml%\temp >nul
- del /q %ml%\*.* >nul
- move %ml%\temp\*.* %ml%\ >nul
- rd %ml%\temp >nul
-
- set ml=Data\china\npcs
- if not exist %ml%\temp md %ml%\temp
- copy %ml%\npcs.pak %ml%\temp>nul
- copy %ml%\_npcs.pak %ml%\temp >nul
- del /q %ml%\*.* >nul
- move %ml%\temp\*.* %ml%\ >nul
- rd %ml%\temp >nul
-
- set ml=Data\china\pc
- if not exist %ml%\temp md %ml%\temp
- copy %ml%\pc.pak %ml%\temp>nul
- copy %ml%\pcs.pak %ml%\temp >nul
- del /q %ml%\*.* >nul
- move %ml%\temp\*.* %ml%\ >nul
- rd %ml%\temp >nul
-
- set ml=Data\china\Quest
- if not exist %ml%\temp md %ml%\temp
- copy %ml%\Quest.pak %ml%\temp>nul
- copy %ml%\z_Quest.pak %ml%\temp >nul
- del /q %ml%\*.* >nul
- move %ml%\temp\*.* %ml%\ >nul
- rd %ml%\temp >nul
-
- set ml=Data\Items
- if not exist %ml%\temp md %ml%\temp
- copy %ml%\Items.pak %ml%\temp>nul
- copy %ml%\ltemsico.pak %ml%\temp >nul
- del /q %ml%\*.* >nul
- move %ml%\temp\*.* %ml%\ >nul
- rd %ml%\temp >nul
-
- set ml=L10N\CHS\Data
- if not exist %ml%\temp md %ml%\temp
- copy %ml%\Data.pak %ml%\temp>nul
- copy %ml%\datas.pak %ml%\temp >nul
- del /q %ml%\*.* >nul
- move %ml%\temp\*.* %ml%\ >nul
- rd %ml%\temp >nul
-
- echo 删除完成
- pause
复制代码
1.L10N\CHS\Data文件夹下的所有文件除了Data.pak和datas.pak之外都会被删除,L10N\CHS\Data文件夹下的其他目录及目录下的文件(如果有的话),都不动!
2.你要判断playnclauncher.exe文件是否存在,但是又没有交代如果存在干嘛,如果不存在又干嘛,所以这个代码里只是判断后显示一段文字而已。
3.代码用的是比较笨的办法,就是在相应目录下新建一个TEMP目录,将需要的文件拷贝到这个目录下,然后再删除上一级目录内的所有文件,删除完后再将需要的文件拷贝回来,并删除TEMP目录。
作者: zaqmlp 时间: 2020-1-9 18:52
- @echo off
- set info=互助互利,支付宝扫码头像,感谢打赏
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- cd /d "%~dp0"
-
- if exist "playnclauncher.exe" (echo;存在) else (echo;不存在)
-
- set "fd=Data\china\item"
- for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
- set "f="
- for %%b in (
- "items.pak"
- "_items.pak"
- ) do (
- if /i "%%~nxa" equ "%%~b" set f=1
- )
- if not defined f del /a /f /q "%fd%\%%~nxa"
- )
-
- set "fd=Data\china\npcs"
- for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
- set "f="
- for %%b in (
- "npcs.pak"
- "_npcs.pak"
- ) do (
- if /i "%%~nxa" equ "%%~b" set f=1
- )
- if not defined f del /a /f /q "%fd%\%%~nxa"
- )
-
- set "fd=Data\china\pc"
- for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
- set "f="
- for %%b in (
- "pc.pak"
- "pcs.pak"
- ) do (
- if /i "%%~nxa" equ "%%~b" set f=1
- )
- if not defined f del /a /f /q "%fd%\%%~nxa"
- )
-
- set "fd=Data\china\Quest"
- for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
- set "f="
- for %%b in (
- "Quest.pak"
- "z_Quest.pak"
- ) do (
- if /i "%%~nxa" equ "%%~b" set f=1
- )
- if not defined f del /a /f /q "%fd%\%%~nxa"
- )
-
- set "fd=Data\Items"
- for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
- set "f="
- for %%b in (
- "Items.pak"
- "ltemsico.pak"
- ) do (
- if /i "%%~nxa" equ "%%~b" set f=1
- )
- if not defined f del /a /f /q "%fd%\%%~nxa"
- )
-
- set "fd=L10N\CHS\Data"
- for /f "delims=" %%a in ('dir /ad/b "%fd%\" 2^>nul') do (
- set "f="
- for %%b in (
- "CutScene"
- "fonts"
- "help"
- "Strings"
- ) do (
- if /i "%%~nxa" equ "%%~b" set f=1
- )
- if not defined f rd /s /q "%fd%\%%~nxa\"
- )
-
- set "fd=L10N\CHS\Data"
- for /f "delims=" %%a in ('dir /a-d/b "%fd%\" 2^>nul') do (
- set "f="
- for %%b in (
- "Data.pak"
- "datas.pak"
- ) do (
- if /i "%%~nxa" equ "%%~b" set f=1
- )
- if not defined f del /a /f /q "%fd%\%%~nxa"
- )
-
- echo;Done
- :end
- echo;%info%
- pause
- exit
复制代码
作者: Gin_Q 时间: 2020-1-10 09:26
本代码没有测试过!- @echo off&rem by author gan 21:41 2020/1/9
- ::(findstr /c)是必须要指定参数的!
-
- set "p_i=\Data\china\item\"
- set "p_n=\Data\china\npcs\"
- set "p_p=\Data\china\pc\"
- set "p_Q=\Data\china\Quest\"
- set "p_It=\Data\Items\"
- set "p_d=\L10N\CHS\Data\"
-
- cd /d "%p_i%"
- call :del_file ./ "%p_1%items.pak" "%p_i%_items.pak"
- cd /d "%p_n%"
- call :del_file ./ "%p_n%npcs.pak" "%p_n%_npcs.pak"
- cd /d "%p_p%"
- call :del_file ./ "%p_p%pc.pak" "%p_p%pcs.pak"
- cd /d "%p_Q%"
- call :del_file ./ "%p_Q%Quest.pak" "%p_Q%z_Quest.pak"
- cd /d "%p_It%"
- call :del_file ./ "%p_It%Items.pak" "%p_It%ltemsico.pak"
- cd /d "%p_d%"
- 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"
-
- echo +----------+
- echo ^| 删除完成 ^|
- echo +----------+
- pause&exit
- :del_file
- if exist playnclauncher.exe echo playnclauncher.exe已经存在
- if not exist playnclauncher.exe echo playnclauncher.exe不存在
- for /r "%~1" %%a in (*) do (setlocal enabledelayedexpansion
- echo %%~pnxa|findstr /c:"%~2" >null && set /a n+=1
- echo %%~pnxa|findstr /c:"%~3" >null && set /a n+=1
- if !on! equ 1 (set /a on=0) else (del /q "%%~dpnxa")
- endlocal
- )
- goto :eof
-
- :max_del
- if exist playnclauncher.exe echo playnclauncher.exe已经存在
- if not exist playnclauncher.exe echo playnclauncher.exe不存在
- for /r "%~1" %%a in (*) do (setlocal enabledelayedexpansion
- echo %%~pnxa|findstr /c:"%~2" >null && set /a n+=1
- echo %%~pnxa|findstr /c:"%~3" >null && set /a n+=1
- echo %%~pnxa|findstr /c:"%~4" >null && set /a n+=1
- echo %%~pnxa|findstr /c:"%~5" >null && set /a n+=1
- echo %%~pnxa|findstr /c:"%~6" >null && set /a n+=1
- echo %%~pnxa|findstr /c:"%~7" >null && set /a n+=1
- if !on! geq 1 (set /a on=0) else (del /q "%%~dpnxa")
- endlocal
- )
- goto :eof
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |