无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8527|回复: 13
打印 上一主题 下一主题

[已解决] 求一个批处理——用IMDISK虚拟磁盘加载ISO文件

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

        求一个批处理——用IMDISK虚拟磁盘加载ISO文件。

        批处理运行后自动用IMDISK虚拟磁盘加载一个名为“win.iso”的ISO文件。

        IMDISK虚拟磁盘(绿色版)在U盘根目录下的IMDISK文件夹内,名为“win.iso”的ISO文件在U

盘根目录下。

        要求此批处理在U盘根目录下的IMDISK文件夹内点击运行。

        谢谢!!!

        感谢众网友热心答复,下面这个实测可用:

@echo off
imdisk -a -f D:\win.iso -m z:
pause

        D就是U盘的在我的电脑里的盘符。

        再做如下修改,就可以在任意电脑上、虚拟机上使用:

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

       用“%~d0 ”取代“D:”,%~d0 是指批处理所在的盘符,用相对路径取代绝对路径,就可以在任意电

脑上、虚拟机上使用,实测成功。


       最后再一次地感谢大家!!!谢谢!!!


        在启动U盘中希望IMDISK虚拟磁盘一被安装好,要安装的系统的ISO镜像就已经被IMDISK

虚拟磁盘所加载,下面就直接安装系统就行了:


        一:



        二:



        IMDISK的安装命令——install.cmd,红色加粗的部分是添加的“自动加载U盘根

目录下的win.iso文件的命令”:


@echo off

setlocal

title ImDisk 虚拟磁盘驱动器安装程序

echo ImDisk 虚拟磁盘驱动器安装程序
echo.

set IMDISK_TOTAL_DEVICES=0
set IMDISK_VALID_DEVICES=0
set IMDISK_PENDING_REMOVAL_DEVICES=0

if exist "%SystemRoot%\system32\imdisk.exe" (
  for /f %%a in ('imdisk -l -n ^| find /v /i ^"No^"') do call :addline "%%a"
)

if %IMDISK_VALID_DEVICES% GTR 0 (
  echo 已加载的 ImDisk 虚拟磁盘数量: %IMDISK_VALID_DEVICES%
  echo.
  if "%IMDISK_SILENT_SETUP%" == "1" (
    echo 请在升级前弹出所有 ImDisk 虚拟磁盘 !
    echo.
  ) else (
    msgboxw "请在升级前弹出所有 ImDisk 虚拟磁盘 !" 16 "ImDisk-虚拟磁盘驱动器安装程序"
    start control imdisk.cpl
  )
  endlocal
  goto :eof
)

echo 已加载的 ImDisk 虚拟磁盘数量: %IMDISK_TOTAL_DEVICES%
echo.
if %IMDISK_TOTAL_DEVICES% == 0 (
  net stop imdsksvc
  net stop awealloc
  net stop imdisk
  if exist "%SystemRoot%\system32\taskkill.exe" taskkill /F /IM imdsksvc.exe
)

pushd "%~dp0"
rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 .\imdisk.inf
popd

if errorlevel 1 (
  if not "%IMDISK_SILENT_SETUP%" == "1" msgboxw "安装失败。请重启计算机后再次尝试运行本程序。" 16 "ImDisk-虚拟磁盘驱动器安装程序"
  endlocal
  goto :eof
)

set IMDISK_START_FAILED=1
if %IMDISK_TOTAL_DEVICES% == 0 (
  set IMDISK_START_FAILED=0
  net start imdsksvc || set IMDISK_START_FAILED=1
  net start awealloc || set IMDISK_START_FAILED=1
  net start imdisk || set IMDISK_START_FAILED=1
)

if not "%IMDISK_SILENT_SETUP%" == "1" (
  if %IMDISK_START_FAILED% == 0 (
imdisk -a -f %~d0\win.iso -m z:
    msgboxw "安装成功。您可以在控制面板中打开 ImDisk 虚拟磁盘驱动器或使用 imdisk 命令行来管理您的虚拟磁盘!" 0 "ImDisk-虚拟磁盘驱动器安装程序"
  ) else (
    msgboxw "安装完成, 但驱动程序或服务无法运行。请重启计算机后再次尝试运行本程序。" 16 "ImDisk-虚拟磁盘驱动器安装程序"
  )
)

endlocal

goto :eof

:addline

imdisk -l -u %~1 > nul 2>&1

if errorlevel 1 (
  set /a IMDISK_PENDING_REMOVAL_DEVICES=%IMDISK_PENDING_REMOVAL_DEVICES% + 1 > nul
) else (
  set /a IMDISK_VALID_DEVICES=%IMDISK_VALID_DEVICES% + 1 > nul
)

set /a IMDISK_TOTAL_DEVICES=%IMDISK_TOTAL_DEVICES% + 1 > nul

goto :eof
2#
发表于 2017-8-13 19:35:52 | 只看该作者
本帖最后由 23456 于 2017-8-13 20:06 编辑

@echo off
U:\IMDISK\imdisk.exe -a -f U:\win.iso -m z:
pause

点评

原来的: @echo off imdisk -a -f D:\A-IMDISK\awin.iso -m z: pause 成功运行。(D就是U盘——在虚拟机里做磁盘。) 新的: U:\IMDISK\imdisk.exe -a -f 或 U:\IMDISK\imdisk-a -f 执行  详情 回复 发表于 2017-8-14 01:52
建议"U:"改为"%~d0"  发表于 2017-8-13 21:48
谢谢!!!实测可用!  详情 回复 发表于 2017-8-13 20:14

评分

参与人数 2无忧币 +10 收起 理由
有阴也有阳 + 5 赞一个!
易广白 + 5 很给力!

查看全部评分

回复

使用道具 举报

3#
 楼主| 发表于 2017-8-13 20:14:00 | 只看该作者
23456 发表于 2017-8-13 19:35
@echo off
U:\IMDISK\imdisk.exe -a -f U:\win.iso -m z:
pause

谢谢!!!实测可用!
回复

使用道具 举报

4#
 楼主| 发表于 2017-8-14 01:52:12 | 只看该作者
23456 发表于 2017-8-13 19:35
@echo off
U:\IMDISK\imdisk.exe -a -f U:\win.iso -m z:
pause


原来的:

@echo off
imdisk -a -f D:\A-IMDISK\awin.iso -m z:
pause

成功运行。(D盘就是U盘——在虚拟机里做磁盘。)


新的:

U:\IMDISK\imdisk.exe -a -f



U:\IMDISK\imdisk-a -f

执行时提示:“既不是内部命令,也不是外部命令”,无法正常执行。

点评

这个提示都是路径不对  详情 回复 发表于 2017-8-14 07:04
回复

使用道具 举报

5#
发表于 2017-8-14 07:04:16 | 只看该作者

这个提示都是路径不对

点评

新的将U改成D: D:\IMDISK\imdisk.exe -a -f 或 D:\IMDISK\imdisk-a -f 执行时仍然提示:“既不是内部命令,也不是外部命令”,无法正常执行。  详情 回复 发表于 2017-8-14 09:52
回复

使用道具 举报

6#
 楼主| 发表于 2017-8-14 09:52:23 | 只看该作者
本帖最后由 有阴也有阳 于 2017-8-14 10:07 编辑
23456 发表于 2017-8-14 07:04
这个提示都是路径不对


新的将U改成D:

D:\IMDISK\imdisk.exe -a -f



D:\IMDISK\imdisk-a -f

执行时仍然提示:“既不是内部命令,也不是外部命令”,无法正常执行。


就是最开始的那个执行良好,谢谢!!!
回复

使用道具 举报

7#
发表于 2017-8-14 10:05:31 来自手机 | 只看该作者
这个东西有驱动和注册表支持,需要初始化才可以使用。
回复

使用道具 举报

8#
发表于 2017-8-14 11:20:11 | 只看该作者
本帖最后由 807979023 于 2017-8-14 11:30 编辑

IMDISK不是需要先安装吗?
安装后应该不需要imdisk.exe旳路径 ,
imdisk.exe -a -f U:\win.iso -m z:
楼主有不需要安装的绿色版?

点评

是不用安装的IMDISK地绿色版。 还有一个问题——如何在安装命令之后加上这一句让IMDISK直接自动加载win.iso? IMDISK的安装命令——install.cmd: @echo off setlocal title ImDisk 虚拟磁盘驱动器安  详情 回复 发表于 2017-8-14 12:41
回复

使用道具 举报

9#
 楼主| 发表于 2017-8-14 12:41:21 | 只看该作者
807979023 发表于 2017-8-14 11:20
IMDISK不是需要先安装吗?
安装后应该不需要imdisk.exe旳路径 ,
imdisk.exe -a -f U:\win.iso -m z:

是不用安装的IMDISK地绿色版。

还有一个问题——如何在安装命令之后加上这一句让IMDISK直接自动加载win.iso?

IMDISK的安装命令——install.cmd:

@echo off

setlocal

title ImDisk 虚拟磁盘驱动器安装程序

echo ImDisk 虚拟磁盘驱动器安装程序
echo.

set IMDISK_TOTAL_DEVICES=0
set IMDISK_VALID_DEVICES=0
set IMDISK_PENDING_REMOVAL_DEVICES=0

if exist "%SystemRoot%\system32\imdisk.exe" (
  for /f %%a in ('imdisk -l -n ^| find /v /i ^"No^"') do call :addline "%%a"
)

if %IMDISK_VALID_DEVICES% GTR 0 (
  echo 已加载的 ImDisk 虚拟磁盘数量: %IMDISK_VALID_DEVICES%
  echo.
  if "%IMDISK_SILENT_SETUP%" == "1" (
    echo 请在升级前弹出所有 ImDisk 虚拟磁盘 !
    echo.
  ) else (
    msgboxw "请在升级前弹出所有 ImDisk 虚拟磁盘 !" 16 "ImDisk-虚拟磁盘驱动器安装程序"
    start control imdisk.cpl
  )
  endlocal
  goto :eof
)

echo 已加载的 ImDisk 虚拟磁盘数量: %IMDISK_TOTAL_DEVICES%
echo.
if %IMDISK_TOTAL_DEVICES% == 0 (
  net stop imdsksvc
  net stop awealloc
  net stop imdisk
  if exist "%SystemRoot%\system32\taskkill.exe" taskkill /F /IM imdsksvc.exe
)

pushd "%~dp0"
rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 .\imdisk.inf
popd

if errorlevel 1 (
  if not "%IMDISK_SILENT_SETUP%" == "1" msgboxw "安装失败。请重启计算机后再次尝试运行本程序。" 16 "ImDisk-虚拟磁盘驱动器安装程序"
  endlocal
  goto :eof
)

set IMDISK_START_FAILED=1
if %IMDISK_TOTAL_DEVICES% == 0 (
  set IMDISK_START_FAILED=0
  net start imdsksvc || set IMDISK_START_FAILED=1
  net start awealloc || set IMDISK_START_FAILED=1
  net start imdisk || set IMDISK_START_FAILED=1
)

if not "%IMDISK_SILENT_SETUP%" == "1" (
  if %IMDISK_START_FAILED% == 0 (
    msgboxw "安装成功。您可以在控制面板中打开 ImDisk 虚拟磁盘驱动器或使用 imdisk 命令行来管理您的虚拟磁盘!" 0 "ImDisk-虚拟磁盘驱动器安装程序"
  ) else (
    msgboxw "安装完成, 但驱动程序或服务无法运行。请重启计算机后再次尝试运行本程序。" 16 "ImDisk-虚拟磁盘驱动器安装程序"
  )
)

endlocal

goto :eof

:addline

imdisk -l -u %~1 > nul 2>&1

if errorlevel 1 (
  set /a IMDISK_PENDING_REMOVAL_DEVICES=%IMDISK_PENDING_REMOVAL_DEVICES% + 1 > nul
) else (
  set /a IMDISK_VALID_DEVICES=%IMDISK_VALID_DEVICES% + 1 > nul
)

set /a IMDISK_TOTAL_DEVICES=%IMDISK_TOTAL_DEVICES% + 1 > nul

goto :eof


在哪儿加上这一句:imdisk.exe -a -f U:\win.iso -m z:

应该如何加?让其在安装完IMDISK后直接自动装载win.iso?

点评

你这个仍然是安装版,只是未打包,安装文件就是install.cmd。 你这个install.cmd太复杂我没看懂,简化后可实现安装完后直接自动装载win.iso。 install.cmd: rundll32 setupapi.dll,InstallHinfSection DefaultI  详情 回复 发表于 2017-8-14 13:59
回复

使用道具 举报

10#
发表于 2017-8-14 13:59:26 | 只看该作者
有阴也有阳 发表于 2017-8-14 12:41
是不用安装的IMDISK地绿色版。

还有一个问题——如何在安装命令之后加上这一句让IMDISK直接自动加载wi ...

你这个仍然是安装版,只是未打包,安装文件就是install.cmd。
你这个install.cmd太复杂我没看懂,简化后可实现安装完后直接自动装载win.iso。

install.cmd:
rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 .\imdisk.inf
net start imdsksvc
net start awealloc
net start imdisk
imdisk -a -f d:\win.iso -m z:


加载iso.cmd:
imdisk -a -f d:\win.iso -m z:

卸载iso.cmd:
imdisk -d -m z:

点评

在原安装CMD命令中已经成功加入加载U盘根目录下的win.iso命令: 一: [attachimg]351534[/attachimg] 二: [attachimg]351535[/attachimg]  详情 回复 发表于 2017-8-14 17:22
谢谢!!!  详情 回复 发表于 2017-8-14 16:43
回复

使用道具 举报

11#
 楼主| 发表于 2017-8-14 16:43:03 | 只看该作者
807979023 发表于 2017-8-14 13:59
你这个仍然是安装版,只是未打包,安装文件就是install.cmd。
你这个install.cmd太复杂我没看懂,简化后 ...

谢谢!!!
回复

使用道具 举报

12#
 楼主| 发表于 2017-8-14 17:22:26 | 只看该作者
本帖最后由 有阴也有阳 于 2017-8-14 19:07 编辑
807979023 发表于 2017-8-14 13:59
你这个仍然是安装版,只是未打包,安装文件就是install.cmd。
你这个install.cmd太复杂我没看懂,简化后 ...


在原安装CMD命令中已经成功地加入加载U盘根目录下的win.iso文件的命令:

一:



二:

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-25 04:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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