跳到主要内容

路径/时间/字符切分等操作

本篇熟悉操作文件路径、时间,温习字符切分 (Delims)。

路径

@echo off
@REM @Author: [email protected]

:GTCONTINUE
@echo 正在运行的这个批处理:
@echo 完全路径[%%0]:%0
@echo 去掉引号[%%~0]:%~0
@echo 所在分区[%%~d0]:%~d0
@echo 所处路径[%%~p0]:%~p0
@echo 文件名[%%~n0]:%~n0
@echo 扩展名[%%~x0]:%~x0
@echo.
@echo 文件属性:%~a0
@echo 修改时间:%~t0
@echo 文件大小:%~z0
@echo.
@echo 盘符和路径[%%~dp0]:%~dp0
@echo 文件名和扩展名[%%~nx0]:%~nx0
@echo 当前 CMD 默认目录[%%cd%%]:%cd%
@echo.

set "CurrentDirName=%~dp0"

for /f "delims=" %%i in ("%CurrentDirName:~0,-1%") do (echo 目录名: %%~ni)

pause >nul

goto GTCONTINUE


时间

@echo off
@REM @Author: [email protected]

set varTimeTemp1=%time: =0%
set varTimeTemp2=%varTimeTemp1::=%
set varTime=%varTimeTemp2:~0,6%
set varDate=%date:~0,4%%date:~5,2%%date:~8,2%%varTime%
@echo 当前日期时间:%varDate%
rem %a:~[m[,n]]%
@echo %varDate:~0,4%年 %varDate:~4,2%月 %varDate:~6,2%日 %varDate:~8,2%时 %varDate:~10,2%分 %varDate:~12%秒
pause


字符切分

@echo off
@REM @Author: [email protected]

rem tokens=有时表示提取全部。
rem tokens=m 表示提取第 m 列。
rem tokens=m,n 表示提取第 m 列和第 n 列。
rem tokens=m-n 表示提取第 m 列至第 n 列。
rem tokens=*表示删除每行前面的空格。忽略行首的所有空格。
rem tokens=m*提取第 m 列以后的所有字符,星号表示剩余的字符。
rem tokens=m,*提取第 m 列以后的所有字符,星号表示剩余的字符。
rem delims 指明点号、减号、空格为分割符,默认是空格和 tab 为分割符,delims==及 delims=表示不要分割符

:GTBegin
cls

set str="123,456,789,0,abc-def,ghi,jkl-mno,pqr,stu,vwx,yz"

for /f "delims=" %%i in (%str%) do echo 字符:%%i
@echo.

@echo tokens=1 delims=-
for /f "tokens=1 delims=-" %%i in (%str%) do echo %%i
@echo.

@echo tokens=1,6 delims=,-
for /f "tokens=1,6 delims=,-" %%i in (%str%) do echo %%i %%j
@echo.

@echo tokens=2-6 delims=,-
for /f "tokens=3-6 delims=,-" %%i in (%str%) do echo %%i %%j %%k
@echo.

@echo tokens=6* delims=,-
for /f "tokens=6* delims=,-" %%i in (%str%) do echo %%i %%j
@echo.

@echo tokens=6,* delims=,-
for /f "tokens=6,* delims=,-" %%i in (%str%) do echo %%i %%j
@echo.

pause>nul
goto GTBegin


更新日志:

  • 2017-05-28