文件路径处理

一
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%



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值