Удалите все папки и файлы, кроме одного с определенным именем, используя .bat - PullRequest
0 голосов
/ 13 сентября 2018

Я использовал приведенный ниже код в файле .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

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

используйте 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"
)
0 голосов
/ 13 сентября 2018

Это одна строка в PowerShell, на ваш взгляд:

Get-ChildItem C:\inetpub\Temp_FME\AutoCAD_Temp\* -File -Exclude Parcel.dwg | Remove-Item -WhatIf

(Если выходные данные верны, удалите параметр -WhatIf, чтобы удалить файлы.)

0 голосов
/ 13 сентября 2018

Если существует только один файл для защиты, все что вам нужно сделать, это заблокировать его

@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 (содержащая часть последней команды, которая заблокирует файл для чтения) определяется только если файл существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...