无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3775|回复: 14
打印 上一主题 下一主题

[已解决] 求一段代码,关于fbinst.exe的

[复制链接]
跳转到指定楼层
1#
发表于 2014-5-13 22:59:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红毛樱木 于 2014-5-14 02:57 编辑

用的百草兄的fbinst
现在想实现个功能,望指教
PE构架是这样的:
外置工具包再FBA内的\USM_TOOL\PETOOL.WIM内
加载shell之前需要创建Y盘,我现在创建Y盘是直接   RAMD ImDisk,L52,FAT,Y:,RamdY_TOOLS
这样有一个问题,每次如果PETOOL.WIM我修改,增大之后都需要调整这段代码
不知道如何通过判断PETOOL.WIM的大小来自动创建Y盘大小。


希望能实现这样:
实际Y盘大小比PETOOL.WIM文件大2M左右
比如PETOOL.WIM大小是10M,则Y盘大小是12M
非常感谢。。。
2#
发表于 2014-5-13 23:49:16 | 只看该作者
本帖最后由 我也爱你 于 2014-5-13 23:52 编辑

pecmd看了看是没有读取文件尺寸命令的。
变通的方法
可以吧RAMD ImDisk,L52,FAT,Y:,RamdY_TOOLS 制作成一个程序
整个操作有exe的功能来完成!
在INI配置中调用这个exe

先使用fb从UD中取出WIM
然后
exe执行挂载之前先读取wim的尺寸设为一个变量 &WINMB
然后 RAMD ImDisk,L&WINMB,FAT,Y:,RamdY_TOOLS

你也可以问问m大看看是否会更新或者有其他命令

点评

另外PECMD支持文件大小返回值! │命令│'SIZE' ┃ ┃ ├──┼───────────────────────  详情 回复 发表于 2014-5-14 00:48
fb没太多注意细节,返回UD分区大小和目录大小是可以的  详情 回复 发表于 2014-5-14 00:44
fbinst是不是可以读取wim大小?  发表于 2014-5-14 00:16
回复

使用道具 举报

3#
发表于 2014-5-13 23:58:12 | 只看该作者
0PE统一版代码片段供参考:
  1. for /f "tokens=4" %%i in ('fbinst ^(%udisk%^) info^|find "0PE/0PE.ISO"') do set Usize=%%i
  2. if "%Usize%"=="" goto :eof
  3. set /a Usize=%Usize%+2*1048576
  4. set /a needsize=%Usize%/1024/1024+20
复制代码

其中%udisk%为ud对应盘,例如hd1。0PE/0PE.ISO是ud内文件。

点评

感谢,一会试试。  发表于 2014-5-14 00:18
回复

使用道具 举报

4#
发表于 2014-5-14 00:44:52 | 只看该作者
我也爱你 发表于 2014-5-13 23:49
pecmd看了看是没有读取文件尺寸命令的。
变通的方法
可以吧RAMD ImDisk,L52,FAT,Y:,RamdY_TOOLS 制作成一 ...

fb没太多注意细节,返回UD分区大小和目录大小是可以的
回复

使用道具 举报

5#
发表于 2014-5-14 00:48:04 | 只看该作者
我也爱你 发表于 2014-5-13 23:49
pecmd看了看是没有读取文件尺寸命令的。
变通的方法
可以吧RAMD ImDisk,L52,FAT,Y:,RamdY_TOOLS 制作成一 ...

另外PECMD支持文件大小返回值!
    │命令│'SIZE'                                                                                      ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │格式│SIZE <变量名><=><文件目录名>                                                                ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │功能│返回指定"文件目录"的所占的大小,单位为字节                                                  ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │参数│■变量名: 用于保存文件目录所占的大小的变量名称;                                            ┃
┃SIZE│    │■文件名: 合法的文件目录名称。                                                              ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │示例│SIZE iSize=C:\Windows\System32\calc.exe 或 SIZE iSize=C:\Windows\System32                   ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │备注│※当文件目录名是相对路径时,表示相对于 WinCMD.EXE 的工作目录或配置文件的工作目录;          ┃
┃    │    │※示例1结果是文件"calc.exe"大小,示例2结果是目录"C:\Windows\System32"的大小。   

给出的例子
SIZE mb=C:\bootmgr
mess %mb%

点评

你可以先用fb释放指定文件到 tools  详情 回复 发表于 2014-5-14 10:51
关键是用PECMD获取不到UD分区的文件大小,我得在创建Y盘之前获取这个WIM大小。。。  发表于 2014-5-14 00:50
回复

使用道具 举报

6#
 楼主| 发表于 2014-5-14 02:50:20 | 只看该作者
pseudo 发表于 2014-5-13 23:58
0PE统一版代码片段供参考:

其中%udisk%为ud对应盘,例如hd1。0PE/0PE.ISO是ud内文件。
  1. for /f %%i in ('fbinst ^(ud^) filesize "USM_TOOL/PETOOLSL.WIM"') do set Wimsize=%%i

  2. set /a Ysize=%Wimsize%/1024+2

  3. pecmd RAMD ImDisk,L%Ysize%,FAT,Y:,RamdY_TOOLS
复制代码



已搞定,感谢。

点评

pseudo的那个方式才是直接的解决方法,值得学习!! 我那个是一时半会没了解fb的其他方式作用。不过也是个变通方法  详情 回复 发表于 2014-5-14 11:11
不错哦·  发表于 2014-5-14 10:53
回复

使用道具 举报

7#
发表于 2014-5-14 10:51:24 | 只看该作者
我也爱你 发表于 2014-5-14 00:48
另外PECMD支持文件大小返回值!
    │命令│'SIZE'                                                  ...

你可以先用fb释放指定文件到 tools
回复

使用道具 举报

8#
发表于 2014-5-14 11:11:50 | 只看该作者

pseudo的那个方式才是直接的解决方法,值得学习!!
我那个是一时半会没了解fb的其他方式作用。不过也是个变通方法

点评

是的,有DIY外之包的就不需要再改内核里面的RAMDY大小了  发表于 2014-5-14 12:47
回复

使用道具 举报

9#
发表于 2014-5-14 13:30:13 | 只看该作者
进来看看学习,谢谢分享经验!
回复

使用道具 举报

10#
发表于 2014-10-4 23:46:10 | 只看该作者
本帖最后由 icevan 于 2014-10-4 23:58 编辑

我之前遇到过这个问题。

http://bbs.l3.wuyou.com/forum.ph ... 9&fromuid=30363

最终的是
@echo off
setlocal ENABLEDELAYEDEXPANSION
fbinst (ud) filesize "UDTOOLS/%1"
if not %errorlevel%==-1 (
   set size=%errorlevel%
   if exist "y:\uramdisk.txt" (
      set /a size=!size!+100
      imdisk -e -s !size!K -m W:
   ) else (
      set /a size=!size!+2600
      imdisk -a -s !size!K -m W: -p "/FS:NTFS /V:UdTemp /Y /Q"
   )
) else (
      exit
)
fbinst (ud) output "UDTOOLS/%1" W:/%%~nx
echo ramdisk=!size!K >>y:\uramdisk.txt
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 09:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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