返回列表 发帖

【分享】换行符在批处理for/f中的特殊应用

对于新手这个也许不是很实用,但我相信随着技术的提升,for/f 的这个特性有很大用途。
for /f "delims=" %%a in ("!string!")do ....COPY
这个for/f 语句是可以循环的,只是大家很少见到下面这种用法
今天有幸把原来我调试代码时误以为的bug加以总结:
@echo off&setlocal enabledelayedexpansion
:: 获取换行符
set LF=^
set "str=$a=1; $b=<>; $c=a*b; $d=2**10"
:: 以换行符为界定符,分别执行set赋值语句,并忽略变量名前的空格
for /f "tokens=*" %%a in ("%str:;=!LF!%")do set %%a
set $
pauseCOPY
3

评分人数

for /f "delims=" %%a in (a.txt)do ....COPY
for /f "delims=" %%a in ("string")do ....COPY
for /f 的这两个用法其实是一种,这里的a.txt和"string"都被统一解析为"文本流",如此便不难理解1楼那个换行符的作用。

TOP

3# zm900612


你忘了 * ? 在 for %%a in (...)do ... 被解析为文件通配符,若当前目录找不到,%%a就成了空值,
for %a in (?)do echo %a
for %a in ("*")do echo %aCOPY
不是一般的问题,不能显示出这个用法的优越性,如果你到了写函数的时候兴许能体会得到。

TOP

本帖最后由 plp626 于 2011-6-18 17:43 编辑

哦,不好意思,看错了你的代码,还以为你没注意过这个用法。

===============

3楼的代码:
莫非WIN7修复了?,XP下直接退出。

TOP

6# applba


二进制数字?没明白你说的

TOP

返回列表