标题: [文件操作] 【已解决】请大佬帮忙写一个带选项功能的文件覆写bat [打印本页]
作者: kokoxx 时间: 2023-11-4 14:38 标题: 【已解决】请大佬帮忙写一个带选项功能的文件覆写bat
本帖最后由 kokoxx 于 2023-11-4 20:43 编辑
RT,这个bat的功能是
假设电脑存在a文件夹和b文件夹(a文件夹和b文件夹的位置均可以由用户自定义修改bat来实现定制)
其中a文件夹存在三个文件
L1P1.sav
L1P2.sav
L1P1.sav
b文件夹只有一个文件
x.sav
而bat的选项界面如下
----------
请输入数字选项:
【1】 用L1P1.sav覆写x.sav
// rem 注释:“用L1P1.sav覆写x.sav ”颜色为红色
说明:xxxx
// rem 注释:“说明文字:xxxx ”的颜色为绿色
【2】 用L1P2sav覆写x.sav
// rem 注释:“用L1P2.sav覆写x.sav ”颜色为红色
说明:yyyyy
// rem 注释:“说明:yyyyy ”的颜色为绿色
【3】 用L1P3sav覆写x.sav
// rem 注释:“用L1P3.sav覆写x.sav ”颜色为红色
说明:zzzz
// rem 注释:“说明:zzzz ”的颜色为绿色
请输入数字选项:
---------------------
当用户输入1,则a文件夹L1P1.sav被复制到b文件夹,b文件夹原有的x.sav被复制并更名为x-backup.sav,接着b文件夹的L1P1.sav更名为x.sav,覆写掉b文件夹原有的x.sav
以此类推
测试样本:
https://www.123pan.com/s/pbxrVv-hVAY.html
作者: 77七 时间: 2023-11-4 15:33
- @echo off
- rem 批处理保存为ansi编码格式
- set "a=d:\a"
- set "b=e:\b"
- echo 请输入数字选项:
- echo=
- echo 【1】[31m用L1P1.sav覆写x.sav[0m
- echo [32m说明:xxxx[0m
- echo 【2】[31m用L1P2sav覆写x.sav[0m
- echo [32m说明:xxxx[0m
- echo 【3】[31m用L1P3.sav覆写x.sav[0m
- echo [32m说明:xxxx[0m
- echo=
- set /p n=请输入数字选项:
- if exist "%a%\L1P%n%.sav" (
- copy "%a%\L1P%n%.sav" "%b%\x.sav"
- )
- pause
复制代码
作者: kokoxx 时间: 2023-11-4 15:59
本帖最后由 kokoxx 于 2023-11-4 16:09 编辑
回复 2# 77七
大佬您好,您的代码测试成功,但我这边出了点问题T-T
是这样的,a文件夹的文件格式其实是一个游戏的存档文件集合,命令格式是LxPy.sav
其中x代表章节,从1到9,也就是9章
y代表章节下的子关卡,从1到6,也就是6关(部分章节只有5关)
所以bat选项格式的写法应该是 “12”(代表第1章节第1关),“95”(代表第9章节第5关)
但这样搞的话,您的代码
set /p n=请输入数字选项:
if exist "%a%\L1P%n%.sav" (
copy "%a%\L1P%n%.sav" "%b%\x.sav"
)
就没法用了……
所以问题来了:如何修改代码成
输入11,对l1p1.sav进行操作?
这里有必要说明,由于每个选项对应的说明文字都是手动自定义
所以我的需求是
代码中的
输入
echo 【1】[31m用L1P1.sav覆写x.sav[0m
echo [32m说明:xxxx[0m
都对应单独的
if exist "%a%\L1P%n%.sav" (
copy "%a%\L1P%n%.sav" "%b%\x.sav"
)
举例
【11】 用L1P1.sav覆写x.sav
// rem 注释:“用L1P1.sav覆写x.sav ”颜色为红色
说明:xxxx
// rem 注释:“说明文字:xxxx ”的颜色为绿色
【25】 用L2P5sav覆写x.sav
// rem 注释:“用L2P5.sav覆写x.sav ”颜色为红色
说明:yyyyy
// rem 注释:“说明:yyyyy ”的颜色为绿色
当然,您只需在bat里写1-2个范例,接下来我直接对着复制粘贴修改就行(这种小白级别操作我还是会的)
测试样本neo:
https://www.123pan.com/s/pbxrVv-YVAY.html
作者: 77七 时间: 2023-11-4 16:50
回复 3# kokoxx
- @echo off
- rem 批处理保存为ansi编码格式
- set "a=d:\a"
- set "b=e:\b"
- echo 请输入数字选项:
- echo=
- for /l %%l in (1,1,9) do (
- for /l %%k in (1,1,9) do (
- if exist "%a%\L%%lP%%k.sav" (
- echo 【%%l%%k】[31m用L%%lP%%k.sav覆写x.sav[0m
- for /f "tokens=1* delims=:" %%a in ('find "说明%%l%%k:" ^<"%~f0"') do (
- echo [32m说明:%%b[0m
- )
- )
- )
- )
- set /p n=请输入数字选项:
- set l=%n:~0,1%
- set k=%n:~1,1%
- if exist "%a%\L%l%P%k%.sav" (
- copy "%a%\L%l%P%k%.sav" "%b%\x.sav"
- )
- pause
- exit
- rem 说明写在下方
- 说明11:xxxxx
- 说明12:yyyyy
复制代码
作者: kokoxx 时间: 2023-11-4 20:42
回复 4# 77七
测试了,确实好用,多谢大佬
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |