批量删除文件夹中的所有文件使用通配符路径
问题描述:
那么我现在要做的是进入每个文件夹下面的目录批量删除文件夹中的所有文件使用通配符路径
"C:\Documents and Settings\"
,并在它的每一个文件夹中,无论名称,检查该路径存在
"C:\Documents and Settings\*\Local Settings\Application Data\CSMRpt\"
,如果它存在,然后删除该导演内的所有TXT文件,如果路径不存在,那么什么也不做,并移动到下一个文件夹内的“C:\文件和“设置”
这是我想出了迄今:
set PATH = "\Local Settings\Application Data\CSMRpt\"
set FILETYPE = "*.txt"
for /d %%g in ("C:\Documents and Settings\*") do if exist %%g%PATH% goto pathexists
:pathexists
del %%g%PATH%%FILETYPE%
答
试试这个。
@echo off
setlocal
set cwd=%CD%
set p=Local Settings\Application Data\CSMRpt
cd /d "c:\Documents and Settings\"
for /d %%I in (*) do (
if exist "%%I\%p%\" (
pushd "%%I\%p%\"
del /q *.txt
popd
)
)
:: (change back to original directory)
cd /d "%cwd%"
答
有两件事情错在这里,你可以不必在set命令=
周围空间,使用goto
不会通过变量(但是你可以使用电话,而不是和它传递的参数)你不需要引用每个变量,%PATH%
虽然你可以重置它,但你不应该这样做,因为它是一个环境变量。
更正代码:
set THEPATH=\Local Settings\Application Data\CSMRpt\
set FILETYPE=*.txt
for /d %%g in ("C:\Documents and Settings\*") do if exist "%%g%THEPATH%." del "%%g%THEPATH%%FILETYPE%"
如果你真的不想for
环路是一条线,你能做到这一点,以及
set THEPATH=\Local Settings\Application Data\CSMRpt\
set FILETYPE=*.txt
for /d %%g in ("C:\Documents and Settings\*") do if exist "%%g%THEPATH%." call :deltxtfiles "%%~g"
exit /B
:deltxtfiles
del "%~1%THEPATH%%FILETYPE%"
goto:eof
你可以有'cd'更改驱动器以及'cd/D fullpath' – 2013-02-22 17:15:48
@PatrickMeinecke - 谢谢。我实施了你的建议。 – rojo 2013-02-22 17:20:04
谢谢你的完美! – SOfanatic 2013-02-22 17:38:09