无忧启动论坛

标题: 求一个批处理——用IMDISK虚拟磁盘加载ISO文件 [打印本页]

作者: 有阴也有阳    时间: 2017-8-13 16:52
标题: 求一个批处理——用IMDISK虚拟磁盘加载ISO文件
本帖最后由 有阴也有阳 于 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
作者: 23456    时间: 2017-8-13 19:35
本帖最后由 23456 于 2017-8-13 20:06 编辑

@echo off
U:\IMDISK\imdisk.exe -a -f U:\win.iso -m z:
pause
作者: 有阴也有阳    时间: 2017-8-13 20:14
23456 发表于 2017-8-13 19:35
@echo off
U:\IMDISK\imdisk.exe -a -f U:\win.iso -m z:
pause

谢谢!!!实测可用!
作者: 有阴也有阳    时间: 2017-8-14 01:52
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

执行时提示:“既不是内部命令,也不是外部命令”,无法正常执行。
作者: 23456    时间: 2017-8-14 07:04
有阴也有阳 发表于 2017-8-14 01:52
原来的:

@echo off

这个提示都是路径不对
作者: 有阴也有阳    时间: 2017-8-14 09:52
本帖最后由 有阴也有阳 于 2017-8-14 10:07 编辑
23456 发表于 2017-8-14 07:04
这个提示都是路径不对


新的将U改成D:

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



D:\IMDISK\imdisk-a -f

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


就是最开始的那个执行良好,谢谢!!!
作者: 窄口牛    时间: 2017-8-14 10:05
这个东西有驱动和注册表支持,需要初始化才可以使用。
作者: 807979023    时间: 2017-8-14 11:20
本帖最后由 807979023 于 2017-8-14 11:30 编辑

IMDISK不是需要先安装吗?
安装后应该不需要imdisk.exe旳路径 ,
imdisk.exe -a -f U:\win.iso -m z:
楼主有不需要安装的绿色版?
作者: 有阴也有阳    时间: 2017-8-14 12:41
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?
作者: 807979023    时间: 2017-8-14 13:59
有阴也有阳 发表于 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:
作者: 有阴也有阳    时间: 2017-8-14 16:43
807979023 发表于 2017-8-14 13:59
你这个仍然是安装版,只是未打包,安装文件就是install.cmd。
你这个install.cmd太复杂我没看懂,简化后 ...

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


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

一:



二:






欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3