无忧启动论坛

标题: 如何使用NSIS设定变量$R1、$R2、$R3写入diskpart的脚本DISK.txt里面几行size=? [打印本页]

作者: chen463    时间: 2024-5-28 11:57
标题: 如何使用NSIS设定变量$R1、$R2、$R3写入diskpart的脚本DISK.txt里面几行size=?
本帖最后由 chen463 于 2024-5-30 09:27 编辑

上次select disk问题已解决,现在进阶处理分区大小问题,敬请大家提供NSIS相关语法运用,感谢!

1. 如何使用NSIS设定变量$R1、$R2、$R3修改写入diskpart的脚本DISK.txt里面几行size=?。
2. 设定变量$R1修改size=300。变量$R2修改size=100。变量$R3修改size=128

DISK.txt内容:

select disk 5
clean
convert gpt
create partition primary size=300
format quick fs=ntfs label="Windows RE tools"
assign letter="T"
create partition efi size=100
rem == Note: for Advanced Format Generation One drives, change to size=260.

format quick fs=fat32 label="System"
assign letter="S"
create partition msr size=128
create partition primary
format quick fs=ntfs label="Windows"
assign letter="W"
............
感谢N大提供修改脚本源码!
运用diskpart脚本自动执行制作U盘分区





作者: nttwqz    时间: 2024-5-28 14:56
上次不是都跟你说了,用NSIS生成这个文件,所有问题迎刃而解,而不是修改现成的,简单的问题为何非要用复杂的解决方法。

还有一种方法,bat写好,用参数调用。
作者: 回归网络    时间: 2024-5-28 16:16
我看看
作者: chen463    时间: 2024-5-28 18:19
nttwqz 发表于 2024-5-28 14:56
上次不是都跟你说了,用NSIS生成这个文件,所有问题迎刃而解,而不是修改现成的,简单的问题为何非要用复杂 ...

因为要调用多个脚本,制作U盘多个分区,内容不一样呀!才这么费工。
作者: nttwqz    时间: 2024-5-28 21:15
chen463 发表于 2024-5-28 18:19
因为要调用多个脚本,制作U盘多个分区,内容不一样呀!才这么费工。

那就多生成几个
作者: chen463    时间: 2024-5-28 21:49
nttwqz 发表于 2024-5-28 21:15
那就多生成几个

已经多生成几个脚本使用测试中,但是还缺少size=变量,等等时间网络搜寻多行修改写入就完美了。
作者: nttwqz    时间: 2024-5-28 22:50
chen463 发表于 2024-5-28 21:49
已经多生成几个脚本使用测试中,但是还缺少size=变量,等等时间网络搜寻多行修改写入就完美了。

size=$R1即可
作者: nttwqz    时间: 2024-5-28 23:23
  1. Section
  2.     SetOutPath "$TEMP"
  3.     FileOpen $R0 "disk.txt" w
  4.     FileWrite $R0 '\
  5.         select disk $R1$\r$\n\
  6.         clean$\r$\n\
  7.         convert gpt$\r$\n\
  8.         create partition primary size=$R2$\r$\n\
  9.         format quick fs=ntfs label="Windows RE tools"$\r$\n\
  10.         assign letter="T"$\r$\n\
  11.         create partition efi size=$R3$\r$\n\
  12.         rem == Note: for Advanced Format Generation One drives, change to size=260.$\r$\n\
  13.         $\r$\n\
  14.         format quick fs=fat32 label="System"$\r$\n\
  15.         assign letter="S"$\r$\n\
  16.         create partition msr size=$R4$\r$\n\
  17.         create partition primary$\r$\n\
  18.         format quick fs=ntfs label="Windows"$\r$\n\
  19.         assign letter="W"$\r$\n'
  20.     FileClose $R0
  21. SectionEnd
复制代码



作者: chen463    时间: 2024-5-29 08:21
nttwqz 发表于 2024-5-28 23:23

FileClose $R0
此句柄无法通过编辑,似乎上面还需要命令,

如果可以整个脚本来输出,那最好不过了。不过需要注意断行,否则不被diskpart接受。

作者: nttwqz    时间: 2024-5-29 09:17
chen463 发表于 2024-5-29 08:21
FileClose $R0
此句柄无法通过编辑,似乎上面还需要命令,


你试了吗?我发代码一般都是测试无误后才发布的。
作者: chen463    时间: 2024-5-29 09:22
本帖最后由 chen463 于 2024-5-29 09:27 编辑

试了,无法通过编辑
是否我编辑里少插件模块组,把它放在任何地方都没通过编辑

作者: nttwqz    时间: 2024-5-29 09:57
chen463 发表于 2024-5-29 09:22
试了,无法通过编辑
是否我编辑里少插件模块组,把它放在任何地方都没通过编辑

file*是内置的,无需插件。提示什么错误?编辑还是编译?
作者: chen463    时间: 2024-5-29 10:06
编译执行时显示红标行,底下讯息,无法通过编译
作者: nttwqz    时间: 2024-5-29 10:17
chen463 发表于 2024-5-29 10:06
编译执行时显示红标行,底下讯息,无法通过编译

你为何非要我重复,错误提示?编译一般都会提示错误行数。看看哪错了。
作者: chen463    时间: 2024-5-29 10:20
本帖最后由 chen463 于 2024-5-29 10:24 编辑

FileClose $R0
提示错误行数

我现在在外,明天才能给剪图,先搁置吧!不急。

作者: nttwqz    时间: 2024-5-29 11:24
chen463 发表于 2024-5-29 10:20
FileClose $R0
提示错误行数


那只是随便写的,$R0可以用$0~$9、$R0~$R9任意变量代替,自定义的也行,文件关闭前该变量不能被替代。
作者: chen463    时间: 2024-5-29 11:59
nttwqz 发表于 2024-5-29 11:24
那只是随便写的,$R0可以用$0~$9、$R0~$R9任意变量代替,自定义的也行,文件关闭前该变量不能被替代。

刚刚看了一下FileClose,可能早上赶时间出门,是它上面行符号错了没收尾
作者: chen463    时间: 2024-5-30 09:10
nttwqz 发表于 2024-5-29 11:24
那只是随便写的,$R0可以用$0~$9、$R0~$R9任意变量代替,自定义的也行,文件关闭前该变量不能被替代。

果然是收尾符号输入错误造成无法编译执行,脚本OK,一次修改写入非常成功,感谢!




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