找回密码
 加入
搜索
查看: 278|回复: 8

[AU3基础] 请教一下一个变量的替换问题!【已解决】

[复制链接]
发表于 2024-6-3 10:35:27 | 显示全部楼层 |阅读模式
本帖最后由 ttmv2019sx 于 2024-6-6 18:29 编辑

碰到这样的问题,哪就是下面的这个运行后,可以安装上,对应IP的网络打印机到本机上,
rundll32 printui.dll,PrintUIEntry /if /b "HP Laserjet 4000 Series PCL" /f %windir%\inf\ntprint.inf /r "IP_10.10.10.1" /m "HP Laserjet 4000 Series PCL" /z   




但由于各种的打印机型号太多,想用变量来读取自动添加相应的型号打印机,老是提示参数错误,runwait这个使用一直出错

$a=''1001办公室'
$b='hp777'
目的是想把第一个"HP Laserjet 4000 Series PCL" 这个打印机名字的,用$a来替换使用,第二个"HP Laserjet 4000 Series PCL"打印机驱动使用变量的驱动名,但是无一例外都是失败提示参数错误,要麻烦A大,和其他知道的朋友进来帮忙一下了,谢谢
修改了第一个就没有通过,所以来请教一下,他这个名字,好像是一定要带上引号的,没有引号的下面的也是失败如下第二条
RunWait(@ComSpec & " /c " & "rundll32 printui.dll,PrintUIEntry /if /b"& '"'&$a&'"'& "/f %windir%\inf\ntprint.inf /r "IP_10.10.10.1" /m "HP Laserjet 4000 Series PCL" /z")





RunWait(@ComSpec & " /c " & "rundll32 printui.dll,PrintUIEntry /if /b"& $a & "/f %windir%\inf\ntprint.inf /r "IP_10.10.10.1" /m "HP Laserjet 4000 Series PCL" /z")





发表于 2024-6-3 12:03:55 | 显示全部楼层
本帖最后由 redapple2008 于 2024-6-3 12:14 编辑
$a="1001办公室"
$b="HP Laserjet 4000 Series PCL"
$c="IP_10.10.10.1"
RunWait(@ComSpec & " /c " &"rundll32 printui.dll,PrintUIEntry /if /b"""& $a &"""/f %windir%\inf\ntprint.inf /r """& $c &""" /m """& $b &""" /z")
 楼主| 发表于 2024-6-3 13:54:56 | 显示全部楼层

这个和我上面的,单引加上双引,写的一样的,不知道是不是你的这个可行,我记得,好像要输出的时候得到引号必需是不一样的组合,这样,两个都是双引也行吗,,我先试一下,谢谢,我只是光是试了前一个地方改了是 不行的,
 楼主| 发表于 2024-6-3 13:59:39 | 显示全部楼层

朋友,好像和我的不一样,呵呵,你好像是一个变量,带上了三组引号,这个能解释一下为什么要三组吗,
发表于 2024-6-3 14:53:16 | 显示全部楼层
ttmv2019sx 发表于 2024-6-3 13:59
朋友,好像和我的不一样,呵呵,你好像是一个变量,带上了三组引号,这个能解释一下为什么要三组吗, ...

我是打印出你需要的格式,没什么理论。也不知怎么解释。
发表于 2024-6-4 00:22:08 | 显示全部楼层
这意思?
$a = '1001办公室'
$b = 'hp777'
RunWait('rundll32 printui.dll,PrintUIEntry /if /b "' & $a & '" /f %windir%\inf\ntprint.inf /r "IP_10.10.10.1" /m "' & $b & '" /z')
 楼主| 发表于 2024-6-4 10:19:31 | 显示全部楼层

A大,本来是这个$a  $b 这二个变量放在目标位置中来运行的,而这个目标位置存在的地方本身是需要带双引号的,所以,我上面是用了单引号加双引号来使用,使其有双引号输出的情况,但是不行,而上面的朋友用了三个双引号就可以达到其效果,所以想知道一下这个三个双引号怎么一个解释其作用。
发表于 2024-6-4 11:26:06 | 显示全部楼层
本帖最后由 afan 于 2024-6-4 11:27 编辑
ttmv2019sx 发表于 2024-6-4 10:19
A大,本来是这个$a  $b 这二个变量放在目标位置中来运行的,而这个目标位置存在的地方本身是需要带双引号 ...

1,要引用包含双引号的字符通常用单引号包围,反之亦然。如果非要要用单一符号表示,则两个连在一起算一个,但这种方式影响阅读。
2,rundll32 该命令无需 @ComSpec & " /c "
 楼主| 发表于 2024-6-5 11:16:11 | 显示全部楼层
afan 发表于 2024-6-4 11:26
1,要引用包含双引号的字符通常用单引号包围,反之亦然。如果非要要用单一符号表示,则两个连在一起算一个 ...

哦,rundll这个不需要转换的吗,这样就真的太好了,我以为是DOS命令都是需要转一下的,谢谢A大了,晚上去试一下,这个取消前面的,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 11:30 , Processed in 0.090743 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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