Board logo

标题: [文本处理] 【已解决】求问批处理for如何把数据枚举成一行一行的? [打印本页]

作者: hztccy    时间: 2022-6-30 22:51     标题: 【已解决】求问批处理for如何把数据枚举成一行一行的?

本帖最后由 hztccy 于 2024-2-22 22:37 编辑

这是我的写的代码
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. for /f "skip=1 delims=" %%i in ('wmic printer list brief') do (echo %%i)
  4. pause
复制代码
我想通过for把命令wmic printer list brief获取到的打印机信息按一行一行输入

然后我可以通过set /p的选择方式给出道其他其他代码使用

类似一个这样的代码操作
  1. setlocal enabledelayedexpansion
  2. set 序号=1
  3. for /f "delims=" %%i in ('dir /b "路径"') do (
  4. set 文件[!序号!]=%%~nxi
  5. echo -----------------------------
  6. echo  ^>^>^>(!序号!)%%i
  7. set /a 序号+=1)
  8. echo -----------------------------
  9. echo.
  10. set /p 选择=-输入序号:
  11. if not "%选择%"=="" (操作) else (goto :返回)
  12. cls
  13. set 序号=1
  14. for /f "delims=" %%i in ('dir /b "C:\123"') do (
  15. set 文件[!序号!]=%%~nxi
  16. echo -----------------------------
  17. echo  ^>^>^>(!序号!)%%i
  18. set /a 序号+=1)
  19. echo -----------------------------
  20. echo.
复制代码

作者: Batcher    时间: 2022-7-1 09:28

回复 1# hztccy


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "n=0"
  4. for /f "tokens=1* delims==" %%a in ('wmic printer get name /value ^| find "Name="') do (
  5.     set "Printer_!n!=%%b"
  6.     set /a n+=1
  7. )
  8. set Printer_
  9. set /p InuputNum=Choose your printer number:
  10. echo,!Printer_%InuputNum%!
  11. pause
复制代码

作者: hztccy    时间: 2022-7-2 20:46

回复  hztccy


请参考Q-04把bat文件保存为ANSI编码:
Batcher 发表于 2022-7-1 09:28



    非常感谢版主大大,主要我个人对for里面的set /a 和 !这类搞不明白,非常感谢
作者: hztccy    时间: 2022-7-3 12:13

本帖最后由 hztccy 于 2022-7-3 12:15 编辑
回复  hztccy


请参考Q-04把bat文件保存为ANSI编码:
Batcher 发表于 2022-7-1 09:28



    我把结果输出给rundll32 printui.dll,PrintUIEntry出现无法调用



下图输出的名称给不到使用


作者: hztccy    时间: 2022-7-3 20:01

回复 2# Batcher


    版主大大,有空吗?帮我看看怎么处理
作者: Batcher    时间: 2022-7-3 22:03

回复 4# hztccy
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "n=0"
  4. for /f "tokens=1* delims==" %%a in ('wmic printer get name /value ^| find "Name="') do (
  5.     for /f "delims=" %%c in ("%%b") do (
  6.         set "Printer_!n!=%%c"
  7.     )
  8.     set /a n+=1
  9. )
  10. set Printer_
  11. set /p InuputNum=Choose your printer number:
  12. echo,!Printer_%InuputNum%!
  13. pause
复制代码

作者: hztccy    时间: 2022-7-4 11:57

回复 6# Batcher


    哥,能我帮我解释一下原理吗?后面的第二次循环没看懂
作者: Batcher    时间: 2022-7-4 18:18

回复 7# hztccy


批处理调用WMIC时如何处理结果中的特殊字符?
http://bbs.bathome.net/thread-2862-1-1.html
http://bbs.bathome.net/thread-28534-1-1.html
http://bbs.bathome.net/thread-28535-1-1.html
http://bbs.bathome.net/thread-12033-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2