Board logo

标题: [文件操作] [已解决]求,将多个批处理脚本识别并显示,且可以调用 [打印本页]

作者: BingjianREMIX    时间: 2023-5-23 20:52     标题: [已解决]求,将多个批处理脚本识别并显示,且可以调用

本帖最后由 BingjianREMIX 于 2023-5-27 14:34 编辑

在原脚本的目录下有一个“mod”文件夹,里面有多个批处理脚本,想要让原脚本识别mod里的脚本并显示出来,而且支持调用,有解决的可能性吗,凭我这小白,实在只能想到dir,但是看了cmd,跟dir好像没有什么关系,应该是通过某些能显示文件的命令,然后输出到mod.ini,然后程序通过mod.ini调用bat脚本(是这样的吧),实在拙见,有劳各位大佬了
作者: Batcher    时间: 2023-5-23 23:48

原脚本-第1步-识别.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. dir /b /a-d "mod\*.bat"
  4. pause
复制代码
你说的识别是这个意思吗?
请举例说明下一步想怎么做。
作者: LTSC1809    时间: 2023-5-24 06:47

  1. @echo off
  2. dir %cd%\mod\*.bat>mod.ini
复制代码
至于调用,dir输出还有时间还有大小啥的,调用要用到for/f分割出每一行的指定内容,再保存下来以后才能调用,所以容我再憋一会儿
作者: BingjianREMIX    时间: 2023-5-26 19:37

原脚本-第1步-识别.bat你说的识别是这个意思吗?
请举例说明下一步想怎么做。
Batcher 发表于 2023-5-23 23:48



    是,但是我想将其echo出来(应该可以设置其变量,然后输出的吧)

echo的格式:
  1. echo.
  2. echo 1.%bat1%
  3. echo.
  4. echo 2.%bat2%
  5. echo.
  6. ...
复制代码

作者: Batcher    时间: 2023-5-26 22:59

回复 4# BingjianREMIX
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. set "n=0"
  5. for /f "delims=" %%i in ('dir /b /a-d "mod\*.bat"') do (
  6.     set /a n+=1
  7.     set bat_!n!=%%i
  8. )
  9. echo 1. %bat_1%
  10. echo 2. %bat_2%
  11. echo 3. %bat_3%
  12. endlocal
  13. pause
复制代码

作者: BingjianREMIX    时间: 2023-5-26 23:14

回复  BingjianREMIX
Batcher 发表于 2023-5-26 22:59


最多也只有3个啊,多出来的也不好看
作者: Batcher    时间: 2023-5-26 23:26

回复 6# BingjianREMIX
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. set "n=0"
  5. for /f "delims=" %%i in ('dir /b /a-d "mod\*.bat"') do (
  6.     set /a n+=1
  7.     set bat_!n!=%%i
  8. )
  9. for /l %%i in (1,1,!n!) do (
  10.     echo %%i. !bat_%%i!
  11. )
  12. endlocal
  13. pause
复制代码

作者: BingjianREMIX    时间: 2023-5-27 13:23

回复  BingjianREMIX
Batcher 发表于 2023-5-26 23:26
但是调用呢
作者: 77七    时间: 2023-5-27 13:36

本帖最后由 77七 于 2023-5-27 13:40 编辑

回复 8# BingjianREMIX


   第10行改为
  1. start /i "" "mod\!bat_%%i!"
复制代码

作者: BingjianREMIX    时间: 2023-5-27 13:43

回复 9# 77七


    要选择啊,我承认,我都没看太懂
作者: 77七    时间: 2023-5-27 13:50

回复 10# BingjianREMIX


  
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. set "n=0"
  5. for /f "delims=" %%i in ('dir /b /a-d "mod\*.bat"') do (
  6.     set /a n+=1
  7.     set bat_!n!=%%i
  8. )
  9. for /l %%i in (1,1,!n!) do (
  10.     echo 序号:%%i 批处理名 !bat_%%i!
  11. )
  12. set /p m=输入序号,空格分隔:
  13. for %%a in (!m!) do (
  14. start /i "" "mod\!bat_%%a!"
  15. )
  16. endlocal
  17. pause
复制代码





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