一 1.1 获取路径加不带后缀的文件名 @echo off set str1=C:\abc\file1.abc call :show %str1% echo %str2% pause goto :eof :show set str2=%~dpn1 1.2 获取路径 @echo off set str1=C:\abc\file1.abc call :show %str1% echo %str2% pause goto :eof :show set str2=%~dp1 简要说明:对于变量%0~%9及for里使用的%i这样的变量,可以有以下的语法: ~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 以上的结果是可以组合的。我们可以通过"%~dpn"这样形式的组合获取一个路径形式的变量的路径及文件名的组合。 在这里,首先我假设"C:\abc\file1.abc"已经在一个变量里面,因为调用它使用的是"%%"的格式,不能扩充,所以我们需要使用call调用一段代码来将它转换成%1的形式。所以你看到了"call :show %str1%" 这一句,通过这里调用call标签后的语句。 另外一个需要注意的是在被调用的":show"标签前面是一句"goto :eof",表示批处理运行至此跳转至文件末尾(也就是退出程序),后面的":show"标签就不会运行了, 相信建立一个C:\abc\file1.xyz这样形式的文件对你来说不是问题,我就不写了 二、 2.1输出相对路径 @echo off ::for /r /d %%d in (*.*) do if exist "%%d/*.*" echo %%d >>content.txt for /f %%i in ('"dir /a /s /b *.*"') do call :next "%%i" pause goto :eof :next set jpg=%1 set cd1=%cd:/=/% set jpg=%jpg:/=/% rem echo %%jpg:%cd1%=%% | findstr . for /f %%j in ('"echo %%jpg:%cd1%=%% | findstr . "') do set last=%%j set last=%last:"=% call :checkFD %last% echo %last% >> content.txt goto :eof :checkFD if exist "%~f1/" echo %1>>directory.txt if exist "%~f1" if not exist "%~f1/" echo %1>>file.txt goto :EOF 2.2压缩JS文件 @echo off set "CURRENT_DIR=%cd%" ::for /r /d %%d in (*.*) do if exist "%%d/*.*" echo %%d >>content.txt for /f %%i in ('"dir /a /s /b *.js"') do call :next "%%i" pause goto :eof :next set jpg=%1 set cd1=%cd:/=/% rem echo cd1:%cd1% set jpg=%jpg:/=/% rem echo jpg:%jpg% rem echo %%jpg:%cd1%=%% | findstr . for /f %%j in ('"echo %%jpg:%cd1%=%% | findstr . "') do set last=%%j rem echo %last% set last=%last:"=% call :checkFD %last% set "from=%last:~1%" set "to=min\%from%" call :mkdir %to% echo todir:%todir% rem set "dir=%%to:.*%=%%" rem echo dir:%dir% echo from:%from% >> content.txt echo to:%to% >> content.txt java -jar yuicompressor-2.4.8.jar %from% -o %to% --charset utf-8 goto :eof :checkFD if exist "%~f1/" echo %1>>directory.txt if exist "%~f1" if not exist "%~f1/" echo %1>>file.txt goto :EOF :mkdir set todir=%~dp1 if not exist %todir% md %todir%
文件路径处理
最新推荐文章于 2022-03-07 07:00:00 发布