ttmv2019sx 发表于 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")





redapple2008 发表于 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")

ttmv2019sx 发表于 2024-6-3 13:54:56

redapple2008 发表于 2024-6-3 12:03


这个和我上面的,单引加上双引,写的一样的,不知道是不是你的这个可行,我记得,好像要输出的时候得到引号必需是不一样的组合,这样,两个都是双引也行吗,,我先试一下,谢谢,我只是光是试了前一个地方改了是 不行的,

ttmv2019sx 发表于 2024-6-3 13:59:39

redapple2008 发表于 2024-6-3 12:03


朋友,好像和我的不一样,呵呵,你好像是一个变量,带上了三组引号,这个能解释一下为什么要三组吗,

redapple2008 发表于 2024-6-3 14:53:16

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

我是打印出你需要的格式,没什么理论。也不知怎么解释。

afan 发表于 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')

ttmv2019sx 发表于 2024-6-4 10:19:31

afan 发表于 2024-6-4 00:22
这意思?

A大,本来是这个$a$b 这二个变量放在目标位置中来运行的,而这个目标位置存在的地方本身是需要带双引号的,所以,我上面是用了单引号加双引号来使用,使其有双引号输出的情况,但是不行,而上面的朋友用了三个双引号就可以达到其效果,所以想知道一下这个三个双引号怎么一个解释其作用。

afan 发表于 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 "

ttmv2019sx 发表于 2024-6-5 11:16:11

afan 发表于 2024-6-4 11:26
1,要引用包含双引号的字符通常用单引号包围,反之亦然。如果非要要用单一符号表示,则两个连在一起算一个 ...

哦,rundll这个不需要转换的吗,这样就真的太好了,我以为是DOS命令都是需要转一下的,谢谢A大了,晚上去试一下,这个取消前面的,
页: [1]
查看完整版本: 请教一下一个变量的替换问题!【已解决】