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

[文件操作] 批处理安装pcl2自定义主页文件的安装器。运行不正常。

我制作了一个如题的东西。首先它会搜索一个叫“Plain Craft Launcher 2.exe”的文件,然后把它所在的目录(去掉文件本身的文件名)赋值给%FIV%。
然后还要把和这个批处理在同一文件夹下的一个叫symenu.ldt的文件里面内容提取出来,把里面所有的[helpfill]都替换成%FIV%的内容,然后再把替换完的内容写入到%FIV%\PCL\Custom.xaml这个文件里。
然后还要把和批处理在同文件夹下的一个叫做“help”的文件夹复制到%FIV%这个目录下面。
按照这些,我做了一个批处理,但是运行不正常:首先,这个批处理同文件夹下出现了一个文件夹叫“2”,里面装着一个空的叫“Help”的文件夹。%FIV%的上级目录下出现了一个叫“PCL”的空文件夹。运行时还出现了几个提示说“语法错误“,同时最后的提示安装总用时,显示为00:00:00.00
代码如下:
  1. @echo off
  2. color f0
  3. title SY Setup
  4. setlocal EnableDelayedExpansion
  5. echo 警告:安装程序为测试版,可能存在bug,如无法正常使用请练习@LTSC1809。
  6. echo 建议备份源文件,以防出现可能出现的潜在bug导致的文件丢失
  7. echo.
  8. pause
  9. cls
  10. echo SY的自定义主页 安装程序(DEV1
  11. echo 正在搜索PCL启动器文件夹...
  12. set "tt=%time%"
  13. set "tn=%time%"
  14. set "FileName=Plain Craft Launcher 2.exe"
  15. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  16. if exist %%a:\ (
  17. for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
  18. if /i "%%~nxb" equ "%FileName%" (
  19. set a=1
  20. set "FIV=%%~dpb"
  21. )
  22. )
  23. )
  24. )
  25. if not defined a (echo 未找到文件,请确认你已经安装了PCL启动器。
  26. pause
  27. exit)
  28. set "t1n=%time%"
  29. if "%t1n:~,2%" lss "%tn:~,2%" set "add=+24"
  30. set /a "timesn=(%t1n:~,2%-%tn:~,2%%add%)*360000+(1%t1n:~3,2%%%100-1%tn:~3,2%%%100)*6000+(1%t1n:~6,2%%%100-1%tn:~6,2%%%100)*100+(1%t1n:~-2%%%100-1%tn:~-2%%%100)" ,"ssn=(timesn/100)%%60","mmn=(timesn/6000)%%60","hhn=timesn/360000","msn=timesn%%100"
  31. echo 找到文件夹:%FIV% 用时:%hhn%:%mmn%:%ssn%.%msn%(时:分:秒.毫秒)
  32. echo 正在删除现有的自定义主页文件...
  33. del /f /s /q "%FIV%\PCL\Custom.xaml"
  34. echo 正在写入...
  35. set "t=%time%"
  36. for /f "usebackq delims=" %%i in ("%cd%\symenu.ldt") do (set str=%%i
  37. set str=!str:[helpfill]=%FIV%!
  38. echo !str!>>"%FIV%\PCL\Custom.xaml")
  39. set "t1=%time%"
  40. if "%t1:~,2%" lss "%t:~,2%" set "add=+24"
  41. set /a "times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)" ,"ss=(times/100)%%60","mm=(times/6000)%%60","hh=times/360000","ms=times%%100"
  42. echo 写入完成!用时:%hh%:%mm%:%ss%.%ms%(时:分:秒.毫秒)
  43. echo 正在复制Help文件夹...
  44. set "tx=%time%"
  45. echo ·删除原有Help文件夹
  46. rmdir /s /q %FIV%\Help
  47. echo ·建立新Help文件夹
  48. md %FIV%\Help
  49. echo ·复制文件
  50. copy %cd%\Help %FIV%\Help
  51. set "t1x=%time%"
  52. if "%t1x:~,2%" lss "%tx:~,2%" set "add=+24"
  53. set /a "timesx=(%t1x:~,2%-%tx:~,2%%add%)*360000+(1%t1x:~3,2%%%100-1%tx:~3,2%%%100)*6000+(1%t1x:~6,2%%%100-1%tx:~6,2%%%100)*100+(1%t1x:~-2%%%100-1%tx:~-2%%%100)" ,"ssx=(timesx/100)%%60","mmx=(timesx/6000)%%60","hhx=timesx/360000","msx=timesx%%100"
  54. set "t1t=%time%"
  55. if "%t1t:~,2%" lss "%tt:~,2%" set "add=+24"
  56. set /a "timest=(%t1t:~,2%-%tt:~,2%%add%)*360000+(1%t1t:~3,2%%%100-1%tt:~3,2%%%100)*6000+(1%t1t:~6,2%%%100-1%tt:~6,2%%%100)*100+(1%t1t:~-2%%%100-1%tt:~-2%%%100)" ,"ssn=(timest/100)%%60","mmn=(timest/6000)%%60","hht=timesn/360000","mst=timesn%%100"
  57. echo 用时:%hhx%:%mmx%:%ssx%.%msx%(时:分:秒.毫秒)
  58. echo 这部分工作已经圆满完成
  59. echo 安装总用时:用时:%hht%:%mmt%:%sst%.%mst%(时:分:秒.毫秒)
  60. echo 安装已结束,请打开pcl启动器检查。
  61. echo 按任意键退出
  62. pause>nul
  63. exit
复制代码
一个六年级小学生,请多指教

回复 7# LTSC1809


那我不用变量延迟不就行了

请亲自试试行还是不行,不能想当然。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. set "FileName=Plain Craft Launcher 2.exe"
  3. set time1=%time%
  4. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  5. if exist %%a:\ (
  6. for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\%FileName%" 2^>nul') do (
  7. set "FIV=%%~dpb"
  8. )
  9. )
  10. )
  11. if not defined FIV (
  12. echo 未找到文件,请确认你已经安装了PCL启动器。
  13. pause
  14. exit
  15. )
  16. set time2=%time%
  17. call :getTime "%time1%" "%time2%" "找到文件夹:%FIV%"
  18. (for /f "usebackq delims=" %%i in ("symenu.ldt") do (
  19. set "str=%%i"
  20. setlocal enabledelayedexpansion
  21. set "str=!str:[helpfill]=%FIV%!"
  22. echo=!str!
  23. endlocal
  24. ))>"%FIV%\PCL\Custom.xaml"
  25. set time3=%time%
  26. call :getTime "%time2%" "%time3%"
  27. rd /s /q "%FIV%\Help"
  28. robocopy "Help" "%FIV%Help" /e
  29. set time4=%time%
  30. call :getTime "%time3%" "%time4%"
  31. call :getTime "%time1%" "%time4%"
  32. echo 按任意键退出
  33. pause>nul
  34. exit
  35. :getTime
  36. set "t=%~1"
  37. set "t1=%~2"
  38. if "%t1:~,2%" lss "%t:~,2%" set "add=+24"
  39. set /a "times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)"
  40. echo %~3 检索时间 %times% ms
  41. exit /b
复制代码
bat小白,请多指教!谢谢!

TOP

回复 6# Batcher


    看了一眼,意思就是开了变量延迟,就会无法输出叹号,那我不用变量延迟不就行了
一个六年级小学生,请多指教

TOP

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

TOP

本帖最后由 LTSC1809 于 2023-7-27 17:39 编辑

回复 4# Batcher


    感谢回答,现在不出错了,但是我发现一个问题,就是原文本和处理后保存的文本不一样。中间的空行都消失了(没空行不影响正常使用,这个可以不解决) 而且还有个叹号莫名消失了,为什么会这样?那个叹号消失的地方,就是:原文件是:
<!--
但是处理完的文件变成了
<--
叹号没了,怎么办
一个六年级小学生,请多指教

TOP

回复 1# LTSC1809
  1. echo ·删除原有Help文件夹
  2. rd /s /q "%FIV%\Help"
  3. echo ·建立新Help文件夹
  4. md "%FIV%\Help"
  5. echo ·复制文件
  6. xcopy /e /y "%cd%\Help" "%FIV%\Help"
复制代码
1

评分人数

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

TOP

回复 2# jyswjjgdwtdtj


    这里事专门讨论bat的地方...苦力怕论坛不是讨论这种的地方吧。
一个六年级小学生,请多指教

TOP

我觉得你可以发到苦力怕论坛云云的地方
你好

TOP

返回列表