找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25974|回复: 4

[文件操作] 【已解决】请大佬帮忙写一个带选项功能的文件覆写bat

[复制链接]
发表于 2023-11-4 14:38:34 | 显示全部楼层 |阅读模式
本帖最后由 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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-11-4 15:33:01 | 显示全部楼层
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. set "a=d:\a"
  4. set "b=e:\b"
  5. echo 请输入数字选项:
  6. echo=
  7. echo 【1】用L1P1.sav覆写x.sav
  8. echo 说明:xxxx
  9. echo 【2】用L1P2sav覆写x.sav
  10. echo 说明:xxxx
  11. echo 【3】用L1P3.sav覆写x.sav
  12. echo 说明:xxxx
  13. echo=
  14. set /p n=请输入数字选项:
  15. if exist "%a%\L1P%n%.sav" (
  16.         copy "%a%\L1P%n%.sav" "%b%\x.sav"
  17. )
  18. pause
复制代码
 楼主| 发表于 2023-11-4 15:59:23 | 显示全部楼层
本帖最后由 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】用L1P1.sav覆写x.sav
echo 说明:xxxx

都对应单独的

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
发表于 2023-11-4 16:50:00 | 显示全部楼层
回复 3# kokoxx


  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. set "a=d:\a"
  4. set "b=e:\b"
  5. echo 请输入数字选项:
  6. echo=
  7. for /l %%l in (1,1,9) do (
  8.         for /l %%k in (1,1,9) do (
  9.                 if exist "%a%\L%%lP%%k.sav" (
  10.                         echo 【%%l%%k】用L%%lP%%k.sav覆写x.sav
  11.                         for /f "tokens=1* delims=:" %%a in ('find "说明%%l%%k:" ^<"%~f0"') do (
  12.                                 echo 说明:%%b
  13.                         )
  14.                 )
  15.         )
  16. )
  17. set /p n=请输入数字选项:
  18. set l=%n:~0,1%
  19. set k=%n:~1,1%
  20. if exist "%a%\L%l%P%k%.sav" (
  21.         copy "%a%\L%l%P%k%.sav" "%b%\x.sav"
  22. )
  23. pause
  24. exit
  25. rem 说明写在下方
  26. 说明11:xxxxx
  27. 说明12:yyyyy
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-11-4 20:42:49 | 显示全部楼层
回复 4# 77七


    测试了,确实好用,多谢大佬
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 09:20 , Processed in 0.017947 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表