本帖最后由 幼稚园 于 2012-8-25 14:49 编辑
- for /f "delims=" %%i in ('dir /b C:\batch_test\source\"*.*"') do echo %%~ti
复制代码 用echo,"%%~i就能发现%%~i只是个文件名(包括扩展名);
故此时,%%~ti就表示在当前工作目录找到"%%~i"文件,然后扩展其时间信息。
::dir /b显示的是文件名,dir /b/s会显示绝对路径
根据上面的分析,当批处理处在C:\batch_test\source\时,便能无误的运行。
下面是我改写的代码,批处理放哪都不会出错:
代码1(通过获取绝对路径的方法):- for /f "delims=" %%i in ('dir /b C:\batch_test\source\"*.*"') do (
- set a=%%~i
- call :main
- )
- pause>nul
- exit
- :main
- for %%i in ("C:\batch_test\source\%a%") do (
- echo,%%~ti
- )
- goto :eof
复制代码 代码2(同过改变工作目录的方法):- pushd "C:\batch_test\source\"
- for /f "delims=" %%i in ('dir /b C:\batch_test\source\"*.*"') do (
- echo,%%~ti
- )
- pause>nul
- exit
复制代码 另外,%%~si也是一样的。
不过%%~ni、%%~xi就不会出现这样的情况,我觉得大概是因为%%~ni不需要找到目标文件,而是直接在%%i的值中扩展。 |