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

[文本处理] 批处理for语句用set为何只能赋值一次?

[复制链接]
发表于 2011-11-1 20:51:10 | 显示全部楼层 |阅读模式
运行环境:
R:\test>dir /b/ad
a123
b123
c123
d123
使用脚本
  1. %echo off
  2. FOR /F "usebackq delims==" %%i IN (`dir /b/ad`) DO (
  3. set dirname=%%i
  4. echo %dirname:~0,3%
  5. )
复制代码
输出结果
R:\test>listvar.bat
R:\test>echo off
d12
d12
d12
d12
我的问题:我的目的是输出每个子目录的前三个字符,
请问怎样修改脚本才能输出我要的结果a12,b12,c12,d12呢?
发表于 2011-11-1 21:28:53 | 显示全部楼层
如果你把书一本本的罗起来,不也是仅能看到最后一本的风面么?
发表于 2011-11-1 21:37:47 | 显示全部楼层
启用延迟变量
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4. set dirname=%%i
  5. echo  !dirname:~0,3!
  6. )
  7. pause
复制代码
 楼主| 发表于 2011-11-1 23:28:56 | 显示全部楼层
哦哦,明白了,谢谢你们的指教! 太久没温习这方面的知识啦,一时间想不起来。
 楼主| 发表于 2011-11-1 23:33:09 | 显示全部楼层
本帖最后由 lqh3417 于 2011-11-1 23:34 编辑

额,刚才提交了回复没有反应,刷新一下才有,登录也是这样,可能是用IE9的问题吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 05:49 , Processed in 0.018710 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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