首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量打印注册表批处理CSV

变量打印注册表批处理CSV
EN

Stack Overflow用户
提问于 2014-12-04 17:30:07
回答 1查看 157关注 0票数 1

在通过cmd查询以下内容时

代码语言:javascript
复制
REG QUERY "HKCU\Printers\Connections"

产出如下:

代码语言:javascript
复制
HKEY_CURRENT_USER\Printers\Connections\,,xxx-SD-KDP11,Colour
HKEY_CURRENT_USER\Printers\Connections\,,xxx-SD-KDP11,Mono

但是,当运行包含以下代码的批处理文件时

代码语言:javascript
复制
@echo OFF
setlocal enableextensions enabledelayedexpansion 
echo ============================
echo Network Printers ...
if exist network_printers.txt del network_printers.txt
if exist network_printers2.txt del network_printers2.txt

set reg_keys=
set blank=
set printers_network_paths=
set printers_network_types=

REG QUERY "HKCU\Printers\Connections" > network_printers.txt

for /f "tokens=* delims=" %%A in ('type network_printers.txt') do set network_printers_init=!network_printers_init! %%A
echo !network_printers_init! > network_printers2.txt
echo !network_printers_init!
pause

for /f "usebackq tokens=1,* delims=, skip=4" %%a in ('network_printers2.txt') do (
  set reg_keys = !reg_keys! %%a
)

for /f "tokens=2,* delims=, skip=4" %%a in ('type network_printers2.txt') do (
  set blank = !blank! %%b
)

for /f "tokens=3,* delims=, skip=4" %%a in ('type network_printers2.txt') do (
  set printers_network_names = !printers_network_names! %%c
)

for /f "tokens=4,* delims=, skip=4" %%a in ('type network_printers2.txt') do (
  set printers_network_types = !printers_network_types! %%d
)

echo reg_keys: !reg_keys!
echo blank: !blank!
echo Network Printers paths: !printers_network_names!
echo Network Printers types: !printers_network_types!

echo Network Printers paths: !printers_network_names! >> %file%
echo Network Printers types: !printers_network_types! >> %file%
pause

生成的.csv文件没有任何意义!printers_network_names!还有!printers_network_types!另外,echo行显示在最后4个变量中没有存储任何内容。

请指点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 20:04:44

for /f循环中,"skip=4"意味着跳过4行,但是network_printers2.txt只包含一行。

还有一些其他的东西可以改进。主要是,当您在批处理脚本中设置变量时,您应该使用set "varname=string",它的引号是这样的,并且没有围绕=的空格。您也可以在没有中间文本文件和type的无用使用的情况下做您需要的事情。

我不完全确定您希望最终结果是什么,但看起来您的脚本比需要的要复杂得多。

代码语言:javascript
复制
@echo OFF
setlocal enableextensions enabledelayedexpansion 
echo ============================
echo Network Printers ...

for /f "tokens=2* delims=," %%A in ('REG QUERY "HKCU\Printers\Connections"') do (
    set "printers_network_names=!printers_network_names! %%A"
    set "printers_network_types=!printers_network_types! %%B"
)

echo Network printer paths: !printers_network_names!
echo Network printer types: !printers_network_types!

结果:

代码语言:javascript
复制
============================
Network Printers ...
Network printer paths:  xxx-SD-KDP11 xxx-SD-KDP11
Network printer types:  Colour Mono
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27300280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档