for 续8

---------siwuxie095

  

  

  

  

一个问题分析:

CMD 窗口输入:

dir

dir /b

dir /b /ah

dir C:\Windows

dir C:\Windows /b

dir C:\windows /b /ah

dir C:\temp.txt /b /ah

  

或在批处理文本中:

@echo off

dir

dir /b

dir /b /ah

dir C:\Windows

dir C:\Windows /b

dir C:\windows /b /ah

rem 手动在C盘根目录添加一个 temp.txt

dir C:\temp.txt /b /ah

pause

  

所有指令都可以执行,保存为批处理文件,

也可以正确执行

  

  

如:显示文件时间

@echo off

for /f "delims="%%i in ('dir /b') doecho%%~ti

pause

  

也可以正确执行,dir 没有指明搜索路径,就默认为

当前路径

  

  

如果指明搜索路径:

@echo off

for /f "delims="%%i in ('dir C:\windows /b') doecho%%~ti

pause

  

程序不能正确执行,无论对搜索的格式如何修改

  

这种改法:

for /f "delims=" %%i in ('dir C:\ /b /ah') do echo %%~ti

还是不能正确执行

  

如果直接在CMD 窗口执行,需要减少一个 %

for /f "delims=" %i in ('dir C:\ /b /ah') do echo %~ti

还是不能正确执行

  

  

%~aI

%~tI

%~zI

%~$path:I

这四个变量都有这个现象,即不能指定路径,但其余的变量都不会

出现这个问题,让人百思不得其解

  

出现上面问题的原因是:

%~aI

%~tI

%~zI

需要指明完整路径,而 dir 搜索出的只是文件名,这样%%~ti 就把

当前工作目录设置为文件的路径,所以找不到文件

  

pushd来转到相应目录即可:

@echo off

pushd C:\windows

for /f "delims="%%i in ('dir C:\windows /b') doecho%%~ti

pause

  

  

也可以用 cd /d 来指明路径:

@echo off

cd /d C:\windows

for /f "delims="%%i in ('dir C:\windows /b') doecho%%~ai

pause>nul

  

  

  

最后一个,%~$path:I 非常特殊:

@echo off

pushd C:\

rem 手动在C盘添加一个 temp.txt

for /f "delims="%%i in ('dir c:\temp.txt /b /ah') doecho%%~$path:i

pause

  

还是不能正确执行

  

如果改为:

@echo off

rem 手动在 C添加一个 temp.txt

rem 单引号里有两个空格[必不可少],然后就出现了结果中那样

rem 如果多加一个空格,会多出一个 ECHO 处于关闭状态

for%%i in ('dir C:\temp.txt ') doecho%%~$path:i

pause

  

sublime中:

  

  

运行一览:显示两个ECHO 处于关闭状态

一个正确的结果

  

  

  

再如:

@echo off

for%%a in ("%path:;=" "%")doecho%%~a

pause

  

sublime中:

  

  

运行一览:目的就是把 PATH 环境变量的每个路径

分离出来进行逐行显示

  

  

  

  

  

【made by siwuxie095】

  

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值