zoukankan      html  css  js  c++  java
  • for 续8

    ---------siwuxie095

       

       

       

       

    一个问题分析:

    CMD 窗口输入:

    dir

    dir /b

    dir /b /ah

    dir C:Windows

    dir C:Windows /b

    dir C:windows /b /ah

    dir C: emp.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: emp.txt /b /ah

    pause

       

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

    也可以正确执行

       

       

    如:显示文件时间

    @echo off

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

    pause

       

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

    当前路径

       

       

    如果指明搜索路径:

    @echo off

    for /f "delims=" %%i in ('dir C:windows /b') do echo %%~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') do echo %%~ti

    pause

       

       

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

    @echo off

    cd /d C:windows

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

    pause>nul

       

       

       

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

    @echo off

    pushd C:

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

    for /f "delims=" %%i in ('dir c: emp.txt /b /ah') do echo %%~$path:i

    pause

       

    还是不能正确执行

       

    如果改为:

    @echo off

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

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

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

    for %%i in ('dir C: emp.txt ') do echo %%~$path:i

    pause

       

    sublime中:

       

       

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

    一个正确的结果

       

       

       

    再如:

    @echo off

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

    pause

       

    sublime中:

       

       

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

    分离出来进行逐行显示

       

       

       

       

       

    【made by siwuxie095】

       

       

  • 相关阅读:
    验证字符串空“” 的表达式
    should not this be a private conversation
    【转】你真的了解word-wrap 和 word-break 的区别吗
    To live is to function,that is all there is in living
    [转] windows 上用程序putty使用 ssh自动登录Linux(Ubuntu)
    Vim/gvim容易忘记的快捷键
    [转] Gvim for windows中块选择的方法
    问题集
    web services
    Trouble Shooting
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6378444.html
Copyright © 2011-2022 走看看