[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】批处理中为何不能用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)
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

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

怎么感觉你在弄编码的!~?
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

报错信息是什么?

TOP

回复 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中的字符串我做了一定的修改
那是为了实现你的意图而对某些特殊字符做的修订
天的白色影子

TOP

多谢!实际上,我是想做一个生成密码的批处理,密码每位上由是字母,数字,或标点符号,假若是生成两位密码,应该怎样写?

TOP

TOP

回复 6# find


  多谢多谢!

TOP

返回列表