Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 批量变量打印注册表CSV_Variables_Batch File_For Loop_Registry_Printers - Fatal编程技术网

Variables 批量变量打印注册表CSV

Variables 批量变量打印注册表CSV,variables,batch-file,for-loop,registry,printers,Variables,Batch File,For Loop,Registry,Printers,通过cmd查询以下内容时 REG QUERY "HKCU\Printers\Connections" 输出为: HKEY_CURRENT_USER\Printers\Connections\,,xxx-SD-KDP11,Colour HKEY_CURRENT_USER\Printers\Connections\,,xxx-SD-KDP11,Mono 但是,在运行包含以下代码的批处理文件时 @echo OFF setlocal enableextensions enabledelayedexp

通过cmd查询以下内容时

REG QUERY "HKCU\Printers\Connections"
输出为:

HKEY_CURRENT_USER\Printers\Connections\,,xxx-SD-KDP11,Colour
HKEY_CURRENT_USER\Printers\Connections\,,xxx-SD-KDP11,Mono
但是,在运行包含以下代码的批处理文件时

@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文件没有任何内容!打印机\网络\名称!还有!打印机\网络\类型! 另外,
echo
行显示最后4个变量中未存储任何内容


请告知?

for/f
循环中,“skip=4”表示跳过4行,但
network\u printers2.txt
仅包含一行

还有一些其他的东西可以改进。主要是,在批处理脚本中设置变量时,应该
设置“varname=string”
,这样引用,并且
=
周围没有空格。您也可以在不使用中间文本文件和无用的
类型
的情况下执行所需操作

我不完全确定你想要的最终结果是什么,但看起来你让你的脚本变得比需要的复杂得多

@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!
结果:

============================
Network Printers ...
Network printer paths:  xxx-SD-KDP11 xxx-SD-KDP11
Network printer types:  Colour Mono

非常感谢。正如你所说,我把事情复杂化了。是的,我确实认为
skip
选项用于跳过令牌而不是行,后者是正确的。此外,我如何在值之间键入所有空格-例如
xxx-SD-KDP11 xxx-SD-KDP11
中有空格。如何删除
for
循环中的空格并替换为单个
|