找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20666|回复: 7

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

[复制链接]
发表于 2022-6-30 22:51:49 | 显示全部楼层 |阅读模式
本帖最后由 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.
复制代码
发表于 2022-7-1 09:28:40 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2022-7-2 20:46:09 | 显示全部楼层
回复  hztccy


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



    非常感谢版主大大,主要我个人对for里面的set /a 和 !这类搞不明白,非常感谢
 楼主| 发表于 2022-7-3 12:13:14 | 显示全部楼层
本帖最后由 hztccy 于 2022-7-3 12:15 编辑
回复  hztccy


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



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



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

 楼主| 发表于 2022-7-3 20:01:09 | 显示全部楼层
回复 2# Batcher


    版主大大,有空吗?帮我看看怎么处理
发表于 2022-7-3 22:03:15 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2022-7-4 11:57:04 | 显示全部楼层
回复 6# Batcher


    哥,能我帮我解释一下原理吗?后面的第二次循环没看懂
发表于 2022-7-4 18:18:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 10:08 , Processed in 0.019171 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表