窗口batch file – 从文件path中删除目录

我试图search我的代码库的所有jscript目录,然后使用下面的批处理脚本获取这些目录中的相关文件的列表…

@echo off setlocal enableextensions enabledelayedexpansion FOR /F "tokens=*" %%G IN ('DIR /B /AD /S jscripts') DO ( CD %%G CD dev SET "currentDir=!cd!" IF NOT "!currentDir:~-1!"=="\" SET "currentDir=!currentDir!\" FOR /r %%F IN (*.js) DO ( SET "relativePath=%%F" SET "relativePath=!relativePath:%currentDir%=!" ECHO !relativePath! ) ) 

这一切都按预期工作,直到它到达…

 SET "relativePath=!relativePath:%currentDir%=!" 

我可以找出什么格式,我需要写这个在转…

 c:\dir\jscript\dev\file.js 

成…

 file.js 

请帮忙!


附加信息

目录设置如下

 dir jscripts dev file.js file2.js live file.js file2.js dir2 jscripts dev file.js file2.js live file.js file2.js 

我想find所有的jscripts目录,CD到他们,得到所有JS文件相对于开发目录的列表

Solutions Collecting From Web of "窗口batch file – 从文件path中删除目录"

 @echo off setlocal enableextensions enabledelayedexpansion rem Where to start pushd "c:\wherever\global2_root\" rem Search .....\dev directories for /f "tokens=*" %%d in ('dir /ad /s /b ^| findstr /e "\\dev"') do ( rem change to that directory pushd "%%~fd" echo Now in !cd! rem process files inside directory for %%f in (*.js) do ( echo %%f ) rem return to previous directory popd ) rem return to initial directory popd rem cleanup endlocal 

要从包含完整路径的变量中提取文件名和扩展名,请使用%~nx0

 set G=c:\dir\jscript\file.js echo %~nxG 

从这个答案引用以下类似的问题

 %~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only %~sI - expanded path contains short names only %~aI - expands %I to file attributes of file %~tI - expands %I to date/time of file %~zI - expands %I to size of file The modifiers can be combined to get compound results: %~dpI - expands %I to a drive letter and path only %~nxI - expands %I to a file name and extension only %~fsI - expands %I to a full path name with short names only 

这是来自“for /?”的复制粘贴 命令的提示。 希望能帮助到你。

有关

前10个DOS批处理提示(是,DOS批处理…)显示batchparams.bat (链接到源作为要点):

 C:\Temp>batchparams.bat c:\windows\notepad.exe %~1 = c:\windows\notepad.exe %~f1 = c:\WINDOWS\NOTEPAD.EXE %~d1 = c: %~p1 = \WINDOWS\ %~n1 = NOTEPAD %~x1 = .EXE %~s1 = c:\WINDOWS\NOTEPAD.EXE %~a1 = --a------ %~t1 = 08/25/2005 01:50 AM %~z1 = 17920 %~$PATHATH:1 = %~dp1 = c:\WINDOWS\ %~nx1 = NOTEPAD.EXE %~dp$PATH:1 = c:\WINDOWS\ %~ftza1 = --a------ 08/25/2005 01:50 AM 17920 c:\WINDOWS\NOTEPAD.EXE