我在.bat文件中使用了以下代码,以便删除除“ parcel.dwg”之外的“ AutoCAD_Temp”中的所有文件和文件夹,但这对我不起作用。
@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
这里可能是什么问题?
我们将不胜感激,
卢布纳
答案 0 :(得分:1)
如果只有一个文件要保护,那么您所需要做的就是将其锁定
@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
变量(保留最终命令的一部分,该部分将锁定文件以供读取。 )仅在文件存在时定义。
答案 1 :(得分:0)
使用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"
)
答案 2 :(得分:0)
这是PowerShell中的一行,供您考虑:
Get-ChildItem C:\inetpub\Temp_FME\AutoCAD_Temp\* -File -Exclude Parcel.dwg | Remove-Item -WhatIf
(如果输出正确,请删除-WhatIf
参数以删除文件。)