无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8294|回复: 13
打印 上一主题 下一主题

[求助] 批处理中加载某一文件夹中的任意ISO文件的命令该如何写?

[复制链接]
跳转到指定楼层
1#
发表于 2017-8-28 11:17:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 有阴也有阳 于 2017-8-28 14:41 编辑

        在一个文件夹中放着几个ISO文件,运行批处理后,要求这个文件夹能自动打开,列出里面的ISO文件,供你用箭

头键选择后再按下回车键加载,有点类似于RUN模块,或SISO模块的功能,这样一个的批处理命令应该如何写?

        简而言之,就是“加载某一文件夹中的任意的ISO文件的批处理命令”该如何写?

        补充:

        批处理用IMDISK虚拟磁盘来加载NT6文件夹下的名为win.iso的文件的命令如下:

@echo off
imdisk -a -f %~d0\NT6\win.iso -m z:
pause

        现在我想改成加载NT6文件夹下的多个ISO文件中的任意一个ISO文件,批处理一运行,NT6文件夹就能自动打开,列出里面的ISO

文件,供你用箭头键选择后再按下回车键加载到IMDISK虚拟磁盘里,这个批处理该如何写?

2#
发表于 2017-8-28 17:53:00 来自手机 | 只看该作者
你是想用批处理实现文件夹选择文件功能吗?这么牛逼的功能我还真不会。估计vbs或者js能办到。

点评

那就简单一点,用批处理打开一个D盘根目录下的名为NT6的文件夹,您看这该如何写,在批处理上本人是小白,谢谢!!!  详情 回复 发表于 2017-8-29 08:52
回复

使用道具 举报

3#
发表于 2017-8-28 18:49:07 来自手机 | 只看该作者
思路可以这样,先列表iso文件,在前面添加序号,然后交互序号来完成操作。
回复

使用道具 举报

4#
发表于 2017-8-28 20:29:24 | 只看该作者
批处理不能提供箭头选择吧,罗列出ISO 提示数字选择还行
回复

使用道具 举报

5#
发表于 2017-8-28 23:27:17 | 只看该作者
这个功能还真有可能,不过需要第三方工具。今天太晚了,我明天研究一下,这还是个有意思的东西,我就知道AskParam是有用的,虽然我以前我也不知道用处是什么。
http://bbs.wuyou.net/forum.php?m ... d=378370#pid3257960
回复

使用道具 举报

6#
 楼主| 发表于 2017-8-29 08:52:18 | 只看该作者
nttwqz 发表于 2017-8-28 17:53
你是想用批处理实现文件夹选择文件功能吗?这么牛逼的功能我还真不会。估计vbs或者js能办到。

那就简单一点,用批处理打开一个D盘根目录下的名为NT6的文件夹,您看这该如何写,在批处理上本人是小白,谢谢!!!
回复

使用道具 举报

7#
发表于 2017-8-29 09:16:05 来自手机 | 只看该作者
d:\nt6就可以了,或者%systemroot%\explorer.exe d:\nt6就可以了。
回复

使用道具 举报

8#
发表于 2017-8-29 11:40:32 | 只看该作者
本帖最后由 pogua007 于 2017-8-29 11:42 编辑

算是实现了一半了,能列出指定目录下的iso文件到选择列表,还可以选择加载的盘符。不过这都不是在命令行窗口中,而是弹出的对话框。
用了AskParam命令真太简单了,不需要if和goto半天了,这命令简单的实在让人惊讶,算上环境设置一共只有四条命令,如果@echo off也算的话应该有五行。
第一条设置开启延迟环境变量;
第二条初始化变量 AskParamISO;
第三条for命令获得文件列表以以AskParam适用的格式设置到变量 AskParamISO中,如果for命令加/r参数则可以获得包含子文件夹的文件列表;
下面的都是第四条命令,因为太长,我用^分行以便于阅读,先选择加载到的盘符,存为临时变量%1,

再选择加载的ISO文件存为临时变量%2,

然后用两个临时变量作为参数启动程序进行加载ISO。
  1. setlocal EnableDelayedExpansion
  2. ::初始变量AskParamISO为“/rl”,/rl是AskParam的参数,作用是使选择框不接受输入,只可加载列表中的ISO文件,如果要使对话框接受输入,AskParamISO则应初始化为空。
  3. set AskParamISO=/rl
  4. for %%i in (%~dp0NT6\*.iso) do set AskParamISO=!AskParamISO! /t"%%i"
  5. AskParam /c"加载ISO文件" /v300:140 /rd /c(1)"选择"  /c(2)"取消" /t"V:" /t"W:" /t"X:" /t"Y:" /t"Z:" /p(e)"选择要加载到的盘符^n可自定义输入" ^
  6. /v300:155 %AskParamISO% /c(1)"加载" /p(e)"选择要加载的ISO文件^n如果要加载不在列表中的ISO文件请输入完整的路径和文件名" ^
  7. notepad %%2
复制代码

我的测试程序,是用记事本打开选择的iso文件,当然测试的iso文件实际是文本文件,如果要实际使用用imdisk把上面的代码最后一行替换为
  1. imdisk -a -f "%%2" -m %%1
复制代码

我认为imdisk没有OSFMount好用,OSFMount很绿色,命令行版本就两个文件,不需要安装,OSFMount的对应的命令为
  1. OSFMount.com -a -t file -f "%%2" -m %%1
复制代码

批处理的主要部分完成了,如果有什么美化要求,那再说。加上@echo off不含注释的完整批处理如下(OSFMount模式):
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set AskParamISO=/rl
  4. for %%i in (%~dp0NT6\*.iso) do set AskParamISO=!AskParamISO! /t"%%i"
  5. AskParam /c"加载ISO文件" /v300:140 /rd /c(1)"选择"  /c(2)"取消" /t"V:" /t"W:" /t"X:" /t"Y:" /t"Z:" /p(e)"选择要加载到的盘符^n可自定义输入" /v300:155 %AskParamISO% /c(1)"加载" /p(e)"选择要加载的ISO文件^n如果要加载不在列表中的ISO文件请输入完整的路径和文件名" OSFMount.com -a -t file -f "%%2" -m %%1
复制代码

需要用到的文件见附件,内含AskParam.exe,OSFMount命令行版本,测试的NT6文件夹及几个假ISO。
如果不愿意下载附件可以自己去网上找需要的软件,AskParam是TC的插件官网https://totalcmd.net/plugring/askparam.html,OSFMount x64更是很好找。
loadisotest.7z (312.89 KB, 下载次数: 26)

点评

十分感谢!  详情 回复 发表于 2017-8-29 15:04
回复

使用道具 举报

9#
发表于 2017-8-29 13:17:34 | 只看该作者
本帖最后由 nttwqz 于 2017-8-29 13:23 编辑

好吧,不止一个人说了列表然后数字选择的方式,虽然我也早想到了,但原来觉得也你要求结果不同,但还是写出来了,如果你能接受的话。

  1. @echo off
  2. pushd %~dp0
  3. rem 查找当前目录下的ISO文件(不含子目录),并生成列表菜单以供选择
  4. rem 菜单显示满屏时暂停,空格键翻页,Q 结束翻页,详情查看more用法,不要翻页的话去掉“ | more”。

  5. dir /a /b *.iso | find /n /v "" | more
  6. set /p select=请选择:
  7. set /a var=%select%-1
  8. if not %var% equ  0 (set "skip=skip=%var% ") else set "skip="
  9. for /f "%skip%delims=" %%a in ('dir /a /b *.iso ^| find /v ""') do (
  10.         echo "%%~fa"
  11.         goto end
  12. )

  13. :end
  14. pause
复制代码



虽然文件太多,比如成百上千时会效率低下(由于执行了两次查找命令),但是吧,相信用列表选择的话,都是很少的文件,个人觉得大量文件生成列表没有意义,要不然几千行看起来也费劲……

忘说了,echo "%%~fa"改成你自己的命令

点评

[attachimg]353443[/attachimg] 请问您在这个批处理中如何将选中的ISO文件装载为IMDISK虚拟磁盘——需要什么地方加 上一句什么批处理命令即可将选中的ISO文件加载为IMDISK虚拟磁盘?  详情 回复 发表于 2017-9-16 18:08
十分感谢!  详情 回复 发表于 2017-8-29 15:05
回复

使用道具 举报

10#
 楼主| 发表于 2017-8-29 15:04:55 | 只看该作者
pogua007 发表于 2017-8-29 11:40
算是实现了一半了,能列出指定目录下的iso文件到选择列表,还可以选择加载的盘符。不过这都不是在命令行窗 ...

十分感谢!
回复

使用道具 举报

11#
 楼主| 发表于 2017-8-29 15:05:27 | 只看该作者
nttwqz 发表于 2017-8-29 13:17
好吧,不止一个人说了列表然后数字选择的方式,虽然我也早想到了,但原来觉得也你要求结果不同,但还是写出 ...

十分感谢!
回复

使用道具 举报

12#
 楼主| 发表于 2017-9-16 18:08:17 | 只看该作者
本帖最后由 有阴也有阳 于 2017-9-16 18:32 编辑
nttwqz 发表于 2017-8-29 13:17
好吧,不止一个人说了列表然后数字选择的方式,虽然我也早想到了,但原来觉得也你要求结果不同,但还是写出 ...


        IMDISK虚拟磁盘已经安装好了——sysiso文件夹中的系统ISO文件也已经列出:



        请问您在这个批处理中如何将选中的ISO文件装载为IMDISK虚拟磁盘——需要什么地方加

上一句什么批处理命令即可将选中的ISO文件加载为IMDISK虚拟磁盘?
回复

使用道具 举报

13#
发表于 2024-10-16 15:22:29 | 只看该作者
谢谢楼主
回复

使用道具 举报

14#
发表于 2024-11-12 20:01:07 | 只看该作者
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-22 00:54

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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