我在.bat文件中使用了以下代码,以便删除“AutoCAD_Temp”中除“parcel.dwg”之外的所有文件和文件夹,但它不能与我一起使用。
@echo
set exclude=/Parcel.dwg/
for %%a in (C:\inetpub\Temp_FME\AutoCAD_Temp) do (
if "!exclude:/%%~a/=!" equ "%exclude%"
(
echo "Deleting" %%~a
del "%%~a"
)
)
文件夹路径:C:\inetpub\Temp_FME\AutoCAD_Temp
这可能是什么问题?
我会非常感谢任何帮助,
Lubna
如果只有一个要保护的文件,您需要做的就是锁定它
@echo off
setlocal enableextensions disabledelayedexpansion
rem Just to avoid having to retype paths, place info on variables
set "folder=C:\inetpub\Temp_FME\AutoCAD_Temp"
set "excluded=Parcel.dwg"
rem If the excluded file exist, we will need to lock it.
if exist "%folder%\%excluded%" ( set lock= ^< "%excluded%" ) else ( set "lock=" )
rem Change to requested folder, remove anything not locked and return
pushd "%folder%" && (
rmdir . /s /q %lock% 2>nul
popd
)
文件存在检查的原因是为了避免尝试锁定将使命令失败的非现有文件,因此,仅在文件中定义lock
变量(保存将锁定文件以供读取的最终命令的一部分)存在。
这是PowerShell中的一行,供您考虑:
Get-ChildItem C:\inetpub\Temp_FME\AutoCAD_Temp\* -File -Exclude Parcel.dwg | Remove-Item -WhatIf
(如果输出正确,请删除-WhatIf
参数以删除文件。)
使用findstr
使用/v
从搜索中排除文件
@echo off
for /f "delims=" %a in ('dir /b "C:\inetpub\Temp_FME\AutoCAD_Temp" ^| findstr /vi "Parcel.dwg"') do (
echo "Deleting" %%~a
echo del "%%~a"
)
如果您想要预定义变量,只需:
@echo off
set "mypath=C:\inetpub\Temp_FME\AutoCAD_Temp"
set "exclude=Parcel.dwg"
for /f "delims=" %a in ('dir /b "%mypath%" ^| findstr /vi "%exclude%"') do (
echo "Deleting" %%~a
echo del "%%~a"
)