有阴也有阳 发表于 2017-8-28 11:17:05

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

本帖最后由 有阴也有阳 于 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虚拟磁盘里,这个批处理该如何写?

nttwqz 发表于 2017-8-28 17:53:00

你是想用批处理实现文件夹选择文件功能吗?这么牛逼的功能我还真不会。估计vbs或者js能办到。

窄口牛 发表于 2017-8-28 18:49:07

思路可以这样,先列表iso文件,在前面添加序号,然后交互序号来完成操作。

发表于 2017-8-28 20:29:24

批处理不能提供箭头选择吧,罗列出ISO 提示数字选择还行

pogua007 发表于 2017-8-28 23:27:17

这个功能还真有可能,不过需要第三方工具。今天太晚了,我明天研究一下,这还是个有意思的东西,我就知道AskParam是有用的,虽然我以前我也不知道用处是什么。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=378370#pid3257960

有阴也有阳 发表于 2017-8-29 08:52:18

nttwqz 发表于 2017-8-28 17:53
你是想用批处理实现文件夹选择文件功能吗?这么牛逼的功能我还真不会。估计vbs或者js能办到。

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

窄口牛 发表于 2017-8-29 09:16:05

d:\nt6就可以了,或者%systemroot%\explorer.exe d:\nt6就可以了。

pogua007 发表于 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。
setlocal EnableDelayedExpansion
::初始变量AskParamISO为“/rl”,/rl是AskParam的参数,作用是使选择框不接受输入,只可加载列表中的ISO文件,如果要使对话框接受输入,AskParamISO则应初始化为空。
set AskParamISO=/rl
for %%i in (%~dp0NT6\*.iso) do set AskParamISO=!AskParamISO! /t"%%i"
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文件请输入完整的路径和文件名" ^
notepad %%2
我的测试程序,是用记事本打开选择的iso文件,当然测试的iso文件实际是文本文件,如果要实际使用用imdisk把上面的代码最后一行替换为
imdisk -a -f "%%2" -m %%1
我认为imdisk没有OSFMount好用,OSFMount很绿色,命令行版本就两个文件,不需要安装,OSFMount的对应的命令为
OSFMount.com -a -t file -f "%%2" -m %%1
批处理的主要部分完成了,如果有什么美化要求,那再说。加上@echo off不含注释的完整批处理如下(OSFMount模式):
@echo off
setlocal EnableDelayedExpansion
set AskParamISO=/rl
for %%i in (%~dp0NT6\*.iso) do set AskParamISO=!AskParamISO! /t"%%i"
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更是很好找。

nttwqz 发表于 2017-8-29 13:17:34

本帖最后由 nttwqz 于 2017-8-29 13:23 编辑

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

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

dir /a /b *.iso | find /n /v "" | more
set /p select=请选择:
set /a var=%select%-1
if not %var% equ0 (set "skip=skip=%var% ") else set "skip="
for /f "%skip%delims=" %%a in ('dir /a /b *.iso ^| find /v ""') do (
        echo "%%~fa"
        goto end
)

:end
pause


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

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

有阴也有阳 发表于 2017-8-29 15:04:55

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

十分感谢!

有阴也有阳 发表于 2017-8-29 15:05:27

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

十分感谢!

有阴也有阳 发表于 2017-9-16 18:08:17

本帖最后由 有阴也有阳 于 2017-9-16 18:32 编辑

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

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



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

上一句什么批处理命令即可将选中的ISO文件加载为IMDISK虚拟磁盘?
页: [1]
查看完整版本: 批处理中加载某一文件夹中的任意ISO文件的命令该如何写?