无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 8296 | 评论数: 13 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-8-28 11:17

正文摘要:

本帖最后由 有阴也有阳 于 2017-8-28 14:41 编辑         在一个文件夹中放着几个ISO文件,运行批处理后,要求这个文件夹能自动打开,列出里面的ISO文件,供你用箭 头键选择后 ...

回复

cqh 发表于 2024-11-12 20:01:07
学习
z1178999161 发表于 2024-10-16 15:22:29
谢谢楼主
有阴也有阳 发表于 2017-8-29 15:05:27
nttwqz 发表于 2017-8-29 13:17
好吧,不止一个人说了列表然后数字选择的方式,虽然我也早想到了,但原来觉得也你要求结果不同,但还是写出 ...

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

十分感谢!
nttwqz 发表于 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
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。
  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
窄口牛 发表于 2017-8-29 09:16:05
d:\nt6就可以了,或者%systemroot%\explorer.exe d:\nt6就可以了。
有阴也有阳 发表于 2017-8-29 08:52:18
nttwqz 发表于 2017-8-28 17:53
你是想用批处理实现文件夹选择文件功能吗?这么牛逼的功能我还真不会。估计vbs或者js能办到。

那就简单一点,用批处理打开一个D盘根目录下的名为NT6的文件夹,您看这该如何写,在批处理上本人是小白,谢谢!!!
pogua007 发表于 2017-8-28 23:27:17
这个功能还真有可能,不过需要第三方工具。今天太晚了,我明天研究一下,这还是个有意思的东西,我就知道AskParam是有用的,虽然我以前我也不知道用处是什么。
http://bbs.wuyou.net/forum.php?m ... d=378370#pid3257960
发表于 2017-8-28 20:29:24
批处理不能提供箭头选择吧,罗列出ISO 提示数字选择还行
窄口牛 发表于 2017-8-28 18:49:07
思路可以这样,先列表iso文件,在前面添加序号,然后交互序号来完成操作。
nttwqz 发表于 2017-8-28 17:53:00
你是想用批处理实现文件夹选择文件功能吗?这么牛逼的功能我还真不会。估计vbs或者js能办到。

点评

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

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

闽公网安备 35020302032614号

GMT+8, 2024-11-22 05:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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