Board logo

标题: 这段批处理什么意思?for /f "usebackq tokens=1* [打印本页]

作者: linuxzhen     时间: 2008-8-10 11:39    标题: 这段批处理什么意思?for /f "usebackq tokens=1*
for /f "usebackq tokens=1* delims=/" %%a in (`dir /b "C:\pdf\"`)

紧急求助

作者: dosyenanjs     时间: 2008-8-10 11:42
提取整行的所有列,忽略空格.

作者: haiou327     时间: 2008-8-10 13:07
在set输出的内容中/作为分隔符,分为两列,从第一个/号左边作为一段赋值%%a,从第一个/号右边开始全部视为了一段赋值%%b

如DIR的内容为
c:\pdf\1.txt
c:\pdf\2.txt
c:\pdf\3.rar
c:\pdf\4.bmp

那么\作分隔符,
c:
c:
c:
c:
第一列赋值%%a

pdf\1.txt
pdf\2.txt
pdf\3.rar
pdf\4.bmp
这些全部赋值%%b

但是你这里用到的是DIR/B的参数只会输出文件名,所以tolens=1* delims=\是多余的.你这句是规范的.
改成如下即可for /f "delims=*" %%a in ('dir /b d:\qq\') do (
echo %%a

结合你上面的举两个例你看看
以下为例1

@echo off
md d:\pdf 2>nul
type>d:\name.txt 2>nul
type>>d:\pdf\1.txt 2>nul
type>>d:\pdf\2.txt 2>nul
type>>d:\pdf\3.rar 2>nul
type>>d:\pdf\4.bmp 2>nul
for /r d:\pdf\ %%i in (*) do (
echo %%~i >>d:\name.txt
)
for /f "tokens=1* delims=\" %%a in (d:\name.txt) do (
echo %%a
)
pause



例2

@echo off
md d:\pdf 2>nul
type>d:\name.txt 2>nul
type>>d:\pdf\1.txt 2>nul
type>>d:\pdf\2.txt 2>nul
type>>d:\pdf\3.rar 2>nul
type>>d:\pdf\4.bmp 2>nul
for /r d:\pdf\ %%i in (*) do (
echo %%~i >>d:\name.txt
)
for /f "tokens=1* delims=\" %%a in (d:\name.txt) do (
echo %%b
)
pause


Last edited by haiou327 on 2008-8-10 at 01:59 PM ]

作者: haiou327     时间: 2008-8-10 13:09
for /f "usebackq tokens=1* delims=/" %%a in (`dir /b "C:\pdf\"`) do  (
echo %%a
)


等同于

for /f "tokens=1* delims=/" %%a in ('dir /b C:\pdf\') do (
echo %%a
)


路径没有空格,可以不用tokens参数

Last edited by haiou327 on 2008-8-10 at 01:57 PM ]

作者: zaixinxiangnian     时间: 2010-3-18 16:09    标题: 谢谢HAIOU327的回答
还是我们这里的热情,,,我们是初学你那两个例子看不懂,你能不能一句一句的解下
太感谢你了