批处理脚本变量不会保持设置

时间:2015-05-28 15:58:55

标签: windows cmd batch-processing

尝试在办公室安装打印机时,我遇到了打印机问题(0x2错误)。

解决方案是运行Win7 pnputil -e> oem_list.txt 然后删除所有类'打印机'的oem * .inf文件 运行GPUpate / Force以刷新组策略和注销。

登录时,不再出现错误,您可以从服务器安装打印机。

PNPU​​til -e

的样本输出
Microsoft PnP Utility

Published name :            oem0.inf  
Driver package provider :   Microsoft  
Class :                     Printers  
Driver date and version :   06/21/2006 6.1.7600.16385  
Signer name :               Microsoft Windows   

Published name :            oem1.inf  
Driver package provider :   Famatech  
Class :                     Display adapters  
Driver date and version :   08/08/2007 3.1  
Signer name :               Microsoft Windows Hardware Compatibility   Publisher

Published name :            oem2.inf  
Driver package provider :   Intel Corporation  
Class :                     System devices  
Driver date and version :   11/02/2006 1.0.0.0   
Signer name :               Microsoft Windows Hardware Compatibility   Publisher

Published name :            oem3.inf  
Driver package provider :   Microsoft  
Class :                     Printers  
Driver date and version :   06/21/2006 6.1.7601.17514  
Signer name :               Microsoft Windows  

我想在oem0.inf和oem3.inf上运行“pnputil -f -d”来删除它们

我使用FOR / f和FINDSTR尝试了几种不同的BATCH循环。 例如:

for /f "tokens=1,3,4" %%a IN (oem_list.txt) do (  
    if %%a==Published (  
       set save_it=%%c  
     ) else (  
    if %%b==Printers pnputil -f -d %save_it%)  
     )  

然而,即使设置了save_it,它也不是-saved-时间类:打印机被找到2行。

非常沮丧!

请帮忙!

1 个答案:

答案 0 :(得分:0)

这个有效:

echo off
pnputil -e > oem_list.txt

for /f "tokens=1,3,4" %%a IN (oem_list.txt) do (
   if %%a==Published echo %%c > item.txt
   if %%b==Printers for /f %%a IN (item.txt) do (pnputil -f -d %%a))

DEL item.txt
DEL oem_list.txt
gpupdate /force /Logoff