Board logo

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

作者: wangxiaodong    时间: 2012-2-24 20:54     标题: 【已解决】批处理中为何不能用for循环分别显示a b c变量?

本帖最后由 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)
复制代码

作者: cjiabing    时间: 2012-2-24 21:03

本帖最后由 cjiabing 于 2012-2-24 23:46 编辑

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

怎么感觉你在弄编码的!~?
作者: find    时间: 2012-2-24 21:04

报错信息是什么?
作者: qzwqzw    时间: 2012-2-25 10:09

回复 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中的字符串我做了一定的修改
那是为了实现你的意图而对某些特殊字符做的修订
作者: wangxiaodong    时间: 2012-2-25 12:00

多谢!实际上,我是想做一个生成密码的批处理,密码每位上由是字母,数字,或标点符号,假若是生成两位密码,应该怎样写?
作者: find    时间: 2012-2-25 12:29

回复 5# wangxiaodong


http://www.bathome.net/thread-11883-1-1.html
http://www.bathome.net/thread-10097-1-1.html
http://www.bathome.net/thread-853-1-1.html
http://www.bathome.net/thread-838-1-1.html
作者: wangxiaodong    时间: 2012-2-25 12:55

回复 6# find


  多谢多谢!




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