无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 7450|回复: 45

请问下有没有命令行小工具能够显示ISO光盘镜像的卷标?

    [复制链接]
发表于 2021-2-19 09:40:37 | 显示全部楼层 |阅读模式
本帖最后由 liuzhaoyzz 于 2021-2-19 09:46 编辑

请问下有没有命令行小工具能够显示ISO光盘镜像的卷标?
       我在无忧论坛、批处理之家论坛、github找了,没有找到合适的命令行工具,请问下有没有命令行小工具能够显示ISO光盘镜像的卷标?希望是用c/c++/pecmd/delphi/au3/ahk等等之类的语言写的,windows-api-GetDriveVolume和GetVolumeInformation好像可以搞定,有没有现成的,不需要重复造轮子的?


折腾这个的原因是,openSUSE好像只支持通过label识别iso镜像确定为root,不能通过uuid识别iso镜像,我尝试过root=live:UUID=xxxx或者root=UUID=xxxx,但是没有成功。grub2下面用probe可以确定,grub4dos的vol好像只能显示iso的前16个字符,例如“openSUSE_Leap_15”,在windows下面用软媒魔方虚拟光驱(小俊去广告)版本挂载ISO显示的也是16个字符的“openSUSE_Leap_15”,(openSUSE的label不支持模糊搜索,郁闷的很),可是openSUSE说他是“openSUSE_Leap_15.2_KDE_Live”,我用ultraiso挂载之后显示的也是“openSUSE_Leap_15.2_KDE_Live”,标准Joliet(64)格式,文件名windows/unix(31),看样子还是ultraiso能力强。


menuentry 'openSUSE Leap 15.2 KDE LiveCD [root/空]' --unrestricted {
loopback loop0 $prefix/linux/openSUSE-Leap-KDE-Live.iso
linux  (loop0)/boot/x86_64/loader/linux root=live:CDLABEL=openSUSE_Leap_15.2_KDE_Live iso-scan/filename=/grub/linux/openSUSE-Leap-KDE-Live.iso   systemd.wants=sshd.service lang=zh_CN
initrd (loop0)/boot/x86_64/loader/initrd
}


grub4dos:vol
map /grub/linux/openSUSE-Leap-KDE-Live.iso (hd32)
map --hook
vol (hd32)
set x=%?%
echo %x%


grub2:--label, -l 检测文件系统卷标
probe --set=x --label (loop);




光盘文件系统(CDFS)的作用与我们所熟悉的FAT16、FAT32等硬盘文件系统的作用基本上是一样的,目前最常见的3种光盘文件系统是:


ISO-9660:由国际标准化组织于1985年颁布,是目前唯一通用的光盘文件系统,任何类型的计算机以及所有的刻录软件都提供对它的支持。因此,如果想让刻录好的光盘能被所有的CD-ROM驱动器都顺利读取的话,那就最好使用ISO-9660或与其兼容的文件系统;其他的文件系统只能在CD-R或CD-RW上读取,限制了光盘的通用性。ISO-9660目前有Level1和Level2两个标准。Level1与DOS兼容,文件名采用传统的8.3格式,而且所有字符只能是26个大写英文字母、10个阿拉伯数字及下划线。Level2则在Level的基础上加以改进,允许使用长文件名,但不支持DOS。


Joliet:微软公司自行定义的光盘文件系统,也是对ISO-9660文件系统的一种扩展,它支持Windows9x/NT和DOS,在Windows9x/NT下文件名可显示64个字符,可以使用中文。


Romeo:著名的Adaptec公司自行定义的文件系统,支持Windows9x/NT,文件名最多可有128个字符,也支持中文,但不支持DOS。



Windows 10 x64-2021-02-19-09-38-53.png
openSUSE光盘格式.png
发表于 2021-2-19 12:21:47 | 显示全部楼层
hidao.org_2021-2-19_12-21-12.png

AU3有相关函数...

点评

这个函数好像也只能解析某个盘符的卷标吧。  详情 回复 发表于 2021-2-19 14:05
我觉得你们的方向是不是错了,如果是获取指定盘符的卷标还用写exe?vol命令就可以获取,我感觉楼主想获取的应该是非挂载状态iso文件的卷标,然后决定挂载哪个文件?我觉得吧,改成有规律的文件名更简单  详情 回复 发表于 2021-2-19 13:18
回复

使用道具 举报

发表于 2021-2-19 13:18:40 来自手机 | 显示全部楼层
邪恶海盗 发表于 2021-2-19 12:21
AU3有相关函数...

我觉得你们的方向是不是错了,如果是获取指定盘符的卷标还用写exe?vol命令就可以获取,我感觉楼主想获取的应该是非挂载状态iso文件的卷标,然后决定挂载哪个文件?我觉得吧,改成有规律的文件名更简单

点评

未挂载的我就不会玩了...  详情 回复 发表于 2021-2-19 14:57
改成有规律的文件名,也是不行的,因为g4d/grub2需要通过这个cheatcode传递给linux的kernel。  详情 回复 发表于 2021-2-19 14:12
回复

使用道具 举报

 楼主| 发表于 2021-2-19 14:04:51 | 显示全部楼层
匿名者 发表于 2021-2-19 10:54
就几行代码,不难啊。需要管理员权限。

这个只能解析某个具体已挂载的盘符的卷标吧,我想要的是在windows下面解析E:\linux\openSUSE\openSUSE-Leap-15.2-KDE-Live-x86_64-Media.iso这种iso的卷标,能做到吗?如果要提前挂载xxx.iso,那就搞大了。不挂载iso可以解析吗?

点评

autoit3 从0x8028开始,32个字节都是卷标 $hfile=FileOpen("grlb2.iso",16) $sText=FileRead($hFile) $jb=BinaryToString(BinaryMid($sText, 32809, 32),1) MsgBox(0,"卷标",$jb)  详情 回复 发表于 2021-2-26 13:42
回复

使用道具 举报

 楼主| 发表于 2021-2-19 14:05:37 | 显示全部楼层

这个函数好像也只能解析某个盘符的卷标吧。

点评

有没有尝试挂载一下,这样就能直接获取了  详情 回复 发表于 2021-2-19 14:57
回复

使用道具 举报

 楼主| 发表于 2021-2-19 14:12:49 来自手机 | 显示全部楼层
nttwqz 发表于 2021-2-19 13:18
我觉得你们的方向是不是错了,如果是获取指定盘符的卷标还用写exe?vol命令就可以获取,我感觉楼主想获取 ...

改成有规律的文件名,也是不行的,因为g4d/grub2需要通过这个cheatcode传递给linux的kernel。
回复

使用道具 举报

发表于 2021-2-19 14:57:03 | 显示全部楼层
nttwqz 发表于 2021-2-19 13:18
我觉得你们的方向是不是错了,如果是获取指定盘符的卷标还用写exe?vol命令就可以获取,我感觉楼主想获取 ...

未挂载的我就不会玩了...
回复

使用道具 举报

发表于 2021-2-19 14:57:45 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-19 14:05
这个函数好像也只能解析某个盘符的卷标吧。

有没有尝试挂载一下,这样就能直接获取了

点评

如果挂载的话,问题就搞大了,需要写驱动去挂载这个ISO。没有必要。  详情 回复 发表于 2021-2-19 15:57
回复

使用道具 举报

发表于 2021-2-19 15:35:29 | 显示全部楼层
本帖最后由 plusv 于 2021-2-19 15:36 编辑

[分享] 命令行小工具能够显示 ISO 光盘镜像的卷标
没做过多的检测,
将就用.

点评

感谢!可以达到目标。  详情 回复 发表于 2021-2-19 15:54
回复

使用道具 举报

 楼主| 发表于 2021-2-19 15:54:24 | 显示全部楼层
plusv 发表于 2021-2-19 15:35
[分享] 命令行小工具能够显示 ISO 光盘镜像的卷标
没做过多的检测,
将就用.

感谢!可以达到目标。
回复

使用道具 举报

 楼主| 发表于 2021-2-19 15:57:08 | 显示全部楼层
邪恶海盗 发表于 2021-2-19 14:57
有没有尝试挂载一下,这样就能直接获取了

如果挂载的话,问题就搞大了,需要写驱动去挂载这个ISO。没有必要。

点评

用PECMD搞了一下: -ChkISOVol D:\AAA.ISO 源码限制了PECMD版本,要用网盘中最最最新的,否则拒绝运行。 [attachimg]475568[/attachimg]  详情 回复 发表于 2021-2-19 21:53
回复

使用道具 举报

发表于 2021-2-19 16:33:47 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-2-19 16:56 编辑

7zip 可以不?

for /f "tokens=1,2 delims==" %c in ('7z l G:\download-2\win10.iso') do @(if /i "%c"=="Comment " echo Label="%d")

点评

我之前试过7z的,好像不行吧,我用的7z版本是1900的。怎么我这里没有comment关键字?  详情 回复 发表于 2021-2-19 17:05
回复

使用道具 举报

 楼主| 发表于 2021-2-19 17:05:37 | 显示全部楼层
dos时代菜鸟 发表于 2021-2-19 16:33
7zip 可以不?

for /f "tokens=1,2 delims==" %c in ('7z l G:\download-2\win10.iso') do @(if /i "%c" ...

我之前试过7z的,好像不行吧,我用的7z版本是1900的。怎么我这里没有comment关键字?

点评

我用的是 18.05 的 高版本的,用 7z 打开 一个 iso ,看看 iso 属性,如果能显示 注释 卷标,就应该可以。  详情 回复 发表于 2021-2-20 09:00
回复

使用道具 举报

发表于 2021-2-19 21:29:37 | 显示全部楼层
527104427 发表于 2021-2-19 18:47
可以爆力获取啊,从0x8028开始,32个字节都是卷标,PECMD获取如下:

GETF D:\AAA.ISO,0x8028#32,&hex

大佬就是大佬,牛屁...
回复

使用道具 举报

 楼主| 发表于 2021-2-19 21:59:47 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2021-2-19 22:30 编辑
527104427 发表于 2021-2-19 21:53
用PECMD搞了一下:
-ChkISOVol  D:\AAA.ISO

测试了下,果然可行,pecmd真的能够做到这个?!实在太强大了!真的是长见识了!
感谢5大!感谢mdyblog!
https://liuzhaoyzz.lanzoui.com/iVPLylvadkf
回复

使用道具 举报

发表于 2021-2-20 09:00:16 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-2-20 09:28 编辑
liuzhaoyzz 发表于 2021-2-19 17:05
我之前试过7z的,好像不行吧,我用的7z版本是1900的。怎么我这里没有comment关键字?

我用的是 18.05 的
高版本的,用 7z 打开 一个 iso ,看看 iso 属性,如果能显示  注释 卷标,就应该可以。

刚测试了下 19.00 版的 7zip 是可以的呀。
捕获.PNG

点评

好像没看到啊?  详情 回复 发表于 2021-2-20 09:29
回复

使用道具 举报

 楼主| 发表于 2021-2-20 09:29:08 | 显示全部楼层
dos时代菜鸟 发表于 2021-2-20 09:00
我用的是 18.05 的
高版本的,用 7z 打开 一个 iso ,看看 iso 属性,如果能显示  注释 卷标,就应该可以 ...

好像没看到啊?
QQ拼音截图20210220092851.png

点评

[attachimg]475578[/attachimg]  详情 回复 发表于 2021-2-20 09:31
回复

使用道具 举报

发表于 2021-2-20 09:31:04 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-2-20 09:33 编辑

捕获.PNG
捕获.PNG

点评

可能comment对于有的ISO有,有的就没有,从字面上来讲,好像是“备注”的意思,如果iso没有这个备注,估计就不行。这个方法不通用。  详情 回复 发表于 2021-2-20 09:54
回复

使用道具 举报

 楼主| 发表于 2021-2-20 09:54:37 | 显示全部楼层

可能comment对于有的ISO有,有的就没有,从字面上来讲,好像是“备注”的意思,如果iso没有这个备注,估计就不行。这个方法不通用。
QQ拼音截图20210220095332.png

点评

有道理  详情 回复 发表于 2021-2-20 10:06
回复

使用道具 举报

发表于 2021-2-20 10:06:12 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-20 09:54
可能comment对于有的ISO有,有的就没有,从字面上来讲,好像是“备注”的意思,如果iso没有这个备注,估 ...

有道理
回复

使用道具 举报

发表于 2021-2-22 17:04:38 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-2-22 19:00 编辑

我在 pecmd 的包里找到了个这,编了个批处理,或许。。。。。哈哈哈

xxd.x64.7z (254.51 KB, 下载次数: 10)

点评

现在支持中文卷标了。  详情 回复 发表于 2021-2-22 20:39
回复

使用道具 举报

发表于 2021-2-24 07:55:38 来自手机 | 显示全部楼层
本帖最后由 窄口牛 于 2021-2-24 08:01 编辑

不是所有的Linux启动都与卷标有关,个别的一部分,确实有要求媒体必须固定卷标。这个确实有点意思,临时修改卷标名称,以启动不同的在优盘里的Linux系统?这种垃圾限制导致你把它解开在fat分区,都通过菜单无法启动,本来就不需要移动媒体了的,你还得搞个优盘看它到底需要什么条件导致,efi启动还必须烧录优盘。

点评

你误会了,哪里有linux发行版强行要求固定卷标的???是通过卷标定位光盘。  详情 回复 发表于 2021-2-24 15:30
回复

使用道具 举报

发表于 2021-2-24 08:09:11 来自手机 | 显示全部楼层
隔壁论坛有人探讨无gui运行bug10,你这一段儿鼓捣这么多自动的东西,下一步可以不要任何gui了。
回复

使用道具 举报

 楼主| 发表于 2021-2-24 15:16:55 | 显示全部楼层
527104427 发表于 2021-2-24 00:21
改成跟 UltraISO 一样的逻辑。

不对啊?怎么是乱码?
?剏??????????????
CDlabel=?剏??????????????
请按任意键继续. . .

@echo off
set "ChkMbrPbr=%~sdp0ChkMbrPbr_x86.exe"
for /f %%i in ('%ChkMbrPbr% -ChkISOVol "E:\linux\puppy\fossapup64-9.5.iso"') do set "CDlabel=%%i"
echo CDlabel=%CDlabel%
pause





点评

Linux是utf8,批处理是ansi,加一句转码语句。  详情 回复 发表于 2021-2-24 15:46
这个iso发给我研究一下,看看什么特征  详情 回复 发表于 2021-2-24 15:39
回复

使用道具 举报

 楼主| 发表于 2021-2-24 15:30:25 | 显示全部楼层
窄口牛 发表于 2021-2-24 07:55
不是所有的Linux启动都与卷标有关,个别的一部分,确实有要求媒体必须固定卷标。这个确实有点意思,临时修 ...

你误会了,哪里有linux发行版强行要求固定卷标的???是通过卷标定位光盘。

点评

结果有差别吗?  详情 回复 发表于 2021-2-24 15:45
回复

使用道具 举报

 楼主| 发表于 2021-2-24 15:40:32 | 显示全部楼层
527104427 发表于 2021-2-24 15:39
这个iso发给我研究一下,看看什么特征

清华大学开源软件镜像站 | Tsinghua Open Source Mirror
https://mirrors.tuna.tsinghua.edu.cn/puppy/puppy-fossa/
fossapup64-9.5.iso
MD5:6a45e7a305b7d3172ebd9eab5ca460e4  fossapup64-9.5.iso
回复

使用道具 举报

发表于 2021-2-24 15:45:19 来自手机 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-24 15:30
你误会了,哪里有linux发行版强行要求固定卷标的???是通过卷标定位光盘。

结果有差别吗?
回复

使用道具 举报

发表于 2021-2-24 15:46:27 来自手机 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-24 15:16
不对啊?怎么是乱码?
?剏??????????????
CDlabel=?剏??????????????

Linux是utf8,批处理是ansi,加一句转码语句。

点评

好像不是cmd转码的问题。我试了chcp 65001,好像更加乱套了! 直接双击ISO挂载,我的电脑里面显示卷标是CDROM。这和ultraiso显示是一致的。 plusv的程序没问题。  详情 回复 发表于 2021-2-24 15:53
回复

使用道具 举报

 楼主| 发表于 2021-2-24 15:53:55 | 显示全部楼层
窄口牛 发表于 2021-2-24 15:46
Linux是utf8,批处理是ansi,加一句转码语句。

好像不是cmd转码的问题。我试了chcp 65001,好像更加乱套了!

直接双击ISO挂载,我的电脑里面显示卷标是CDROM。这和ultraiso显示是一致的。
plusv的程序没问题。
QQ截图20210224155320.jpg
回复

使用道具 举报

发表于 2021-2-24 16:29:32 | 显示全部楼层
看来还是挂载靠谱些

PECMD脚本:

//PECMD会自动安装Imdisk
set &file=fossapup64-9.5.iso
fdrv *idlec &pf=*:
mstr * &pf=<1>&pf
ramd imdisk* -a -m %&pf% -f %&file%
fdrv *vol &vol=%&pf%
mess. %&vol%
ramd imdisk* -D -m %&pf%

点评

挂载的方案,不考虑,因为需要驱动加持,不方便。  详情 回复 发表于 2021-2-24 22:06
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 04:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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