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

[文本处理] 【已解决】批处理中为何不能用for循环分别显示a b c变量?

[复制链接]
发表于 2012-2-24 20:54:22 | 显示全部楼层 |阅读模式
本帖最后由 wangxiaodong 于 2014-4-4 16:52 编辑

请大侠指点一下,那里出错了。多谢!

  1. @echo off
  2. set a=0 1 2 3 4 5 6 7 8 9
  3. set b=q w e r t y u i o p a s d f g h j k l z x c v b n m
  4. set c=, . ; ' ! @ # $ % ^ & * , 。 ; ‘
  5. for %%a in (a b c) do(
  6. for %%b in ("%%%a%") do echo %%b>>1.txt)
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-2-24 21:03:40 | 显示全部楼层
本帖最后由 cjiabing 于 2012-2-24 23:46 编辑

set要用双引号,for的%%a用的是双引号而不是百分号,回去学基础吧,用手打输入代码!~

怎么感觉你在弄编码的!~?
发表于 2012-2-24 21:04:17 | 显示全部楼层
报错信息是什么?
发表于 2012-2-25 10:09:27 | 显示全部楼层
回复 1# wangxiaodong
关键在于这一句
for %%b in ("%%%a%") do echo %%b>>1.txt

%%%%a% 并不会按照你设计的方式进行扩展的
%的匹配大致遵循从左向右的原则 而不是从里向外

所以,正确的写法应该是这样

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set a=0 1 2 3 4 5 6 7 8 9
  4. set b=q w e r t y u i o p a s d f g h j k l z x c v b n m
  5. set c=, . ; ' ^^^! @ # $ %% ^^^^ ^& * , 。 ; ‘
  6. for %%a in (a b c) do (
  7.     echo !%%a!>>1.txt
  8. )
复制代码
使用感叹号(环境变量延迟扩展符号)代替百分号(环境变量立即扩展符号)
就实现了变量的动态扩展

注意变量C中的字符串我做了一定的修改
那是为了实现你的意图而对某些特殊字符做的修订
 楼主| 发表于 2012-2-25 12:00:23 | 显示全部楼层
多谢!实际上,我是想做一个生成密码的批处理,密码每位上由是字母,数字,或标点符号,假若是生成两位密码,应该怎样写?
发表于 2012-2-25 12:29:03 | 显示全部楼层
 楼主| 发表于 2012-2-25 12:55:46 | 显示全部楼层
回复 6# find


  多谢多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 04:27 , Processed in 0.031379 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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