获得当前目录:
echo %cd%
set str=aa bb cc dd
for /f %%i in("%str%") do echo %%i
以上两行命令在命令提示符直接输入的话运行出错,如果写在bat文件里面后运行正常,不知道为什么???
获得某bat文件的完成路径(不一定是当前目录下)
::以 "C:/Documents and Settings/Administrator/桌面/test.bat" 为例
dir /s/b %0 > a.txt ---->这一句是关键
for /f "tokens=* delims=/" %%i in (a.txt) do (
echo %%i & set str=%%i)
del a.txt
set bat_file=%str%
echo bat_file = %bat_file% ---->bat文件的完成路径,包含文件名
:: bat_file="C:/Documents and Settings/Administrator/桌面/test.bat"
分离路径:
set /a pos=0 ---->记录最后一个字符"/"的位置
set /a len=0 ---->记录字符串总长
:next
if "%str%"=="" goto stop
set /a len+=1
if "%str:~0,1%"=="/" set /a pos=%len%
set str=%str:~1%
goto next
:stop
echo pos = %pos%
echo len = %len%
提取部分字符串(方法一,变量嵌套+命令嵌套):
call set bat_path=%%bat_file:~0,%pos%%%
echo bat_path = %bat_path%
提取部分字符串(方法二,变量延迟):
setlocal enabledelayedexpansion
set bat_path=!bat_file:~0,%pos%!
echo bat_path = %bat_path%