标题: [文件操作] [已解决]批处理for /f中%%i的扩展为何会失败? [打印本页]
作者: abcdshenji 时间: 2011-5-2 13:38 标题: [已解决]批处理for /f中%%i的扩展为何会失败?
我在C盘建了4个文本:a.txt b.txt c.txt d.txt- @echo off
- (
- echo ========扩展到a属性=========
- for /f %%i in ('dir /b /a-d c:\*.txt') do echo %%~ai
- echo ========扩展到t属性=========
- for /f %%i in ('dir /b /a-d c:\*.txt') do echo %%~ti
- echo ========扩展到z属性=========
- for /f %%i in ('dir /b /a-d c:\*.txt') do echo %%~zi
- )>$
- move /y $ 1.txt >nul
- pause>nul
复制代码
结果是这样的:- ========扩展到a属性=========
- ECHO 处于关闭状态。
- --a------
- ECHO 处于关闭状态。
- ECHO 处于关闭状态。
- ========扩展到t属性=========
- ECHO 处于关闭状态。
- 2011/04/22 23:31
- ECHO 处于关闭状态。
- ECHO 处于关闭状态。
- ========扩展到z属性=========
- ECHO 处于关闭状态。
- 3162
- ECHO 处于关闭状态。
- ECHO 处于关闭状态。
复制代码
其他属性如n x f 什么的都正常。。。就这三个不正常。。而且能显示的修改时间和文件大小都不对。。。这是怎么回事呀?
作者: hanyeguxing 时间: 2011-5-2 14:23
for /f "delims=" %%i in (
作者: abcdshenji 时间: 2011-5-2 14:32
2# hanyeguxing
还是不行。。结果一样。。
作者: powerbat 时间: 2011-5-2 14:47
@echo off
pushd C:\
...
pause>nul
popd
作者: abcdshenji 时间: 2011-5-2 16:10
本帖最后由 abcdshenji 于 2011-5-2 16:13 编辑
4# powerbat
试过可以。。。但是我不知道pushd的用法。。要查查了
作者: abcdshenji 时间: 2011-5-2 16:33
http://bathome.net/viewthread.php?tid=12128&highlight=pushd
看了这篇帖子后还是不太明白。。难道%%i部分扩展跟必须用pushd?两者之家存在某些关联?这是什么道理啊
作者: powerbat 时间: 2011-5-2 16:56
与命令本身没有任何关系,只与命令产生的结果有关。
脚本运行的目录中没有那些文件,那几个属性当然扩展不出来。
pushd就是改变工作目录的。当然你可以用cd /d
作者: CrLf 时间: 2011-5-2 17:02
因为dir /b 不加/s的时候结果是不带路径的,而%%~zi获取扩展信息的方式是读取dir输出的对应文件的信息,不过因为此时dir只输出了文件名而没有输出文件路径,%%~zi就认为%%i是当前文件夹下的文件,读取对应信息时却找不到文件,所以会出现这些错误
作者: abcdshenji 时间: 2011-5-2 17:13
8# zm900612
原来如此。。学习了。。也谢谢powerbat。。你们说的都是一个道理:也就是说%%i扩展中的%%i的值必须带有路径。。如果没有路径就代表当前目录。。是吧。。谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |