kök ve alt sınırlardaki belirli klasörü sil


-1

Kök ve alt sınırlardaki belirli bir klasörü silmek istiyorum, sorun benim kodum sadece dizinin kök dizinindeki klasörü silmek:

SET dirname=test
SET directory=%cd%
SET found=false


    if NOT "%1%" == "" (
        set directory=%1%
    )
    echo Searching for %dirname% in %directory%

    for /d %%i in (%directory%\%dirname%) do (
        IF EXIST %%i (
            REM change the sentinel value
            set found=true

            echo Deleting the folder %%i
            REM Delete a folder, even if not empty, and don't prompt for confirmation
            RD  /s /q %%i
        )
    )

    REM logic to do if no files were found
    if NOT "%found%" == "true" (
        echo No directories were found with the name of %dirname%
    )

Bu klasör yapısı:

E:sampledelete
├───folder1
├───folder2
│   └───somefolder
├───test
│   └───somefolder
├───newfolder
│   ├───test
│   │   └───somefolder
├───newfolder2
│   ├───test

komut dosyasını çalıştırdıktan sonra şuna değiştirildi:

E:sampledelete
├───folder1
├───folder2
│   └───somefolder
├───newfolder
│   ├───test
│   │   └───somefolder
├───newfolder2
│   ├───test

Burada kullandığınız Windows sürümüyle ilgili soruya bir TAG ekleyebilir misiniz?
music2myear

Windows 10 kullanıyorum
Albert222

(0) Lütfen sorunuzu [windows 10] etiketini eklemek için düzenleyin . (1) “Alt-sıra” nedir? (2) Lütfen sorunuzu daha açık bir şekilde belirtmek için düzenleyin .
Scott,

@scott Düzenledim ve Windows 7 ve Windows 10'da test ettim. Sıkı çalışma sadece kök dizindeki klasörü
kaldırıyor

Aşağıdaki gibi bir satırı silmeye devam etmek istiyor musunuz: C: \ 1nodeDeep \ 2nodesDeep \ 3nodesDeep \ 4nodesDeep \ ... \ test?
El8dN8

Yanıtlar:


0

Sorunlar aşağıda açıklanmıştır. Başlıca sorun, dizin yanlış anlaşılmasıydı: kök altındaki 1 düğümün altındaki dizine bakmıyordunuz. Doğru fikrin vardı. Söylediğiniz gibi “yeni” olduğunuz için, farklılıkları analiz etmeye değer.

@echo off
SET dirname=test
SET directory=%cd%
SET found=false

    if NOT "%1%" == "" (
        set directory=%1%
    )

    REM We want to look in the current directory not in for Z:\test
    for /d %%i in (%directory%*) do (
        echo Searching for %%i\%dirname% in %directory%

        REM We already know the folder existed because "do" ran.
        REM We want to look beneath the root directory
        IF EXIST %%i\%dirname% (
            REM change the sentinel value
            set found=true

            REM we want to delete the nodes beneath not the one in root
            echo Deleting the folder %%i\%dirname%

            REM Delete a folder
            REM we want to delete the nodes beneath not the one in root
            RD  /s /q %%i\%dirname%
        )

        IF %%1 == %dirname% (
            REM change the sentinel value
            set found=true

            REM Delete a folder, even if not empty, and don't prompt for confirmation
            echo Deleting the folder %%i\%dirname%
            RD  /s /q %%i
        )
    )

    REM logic to do if no files were found
    if NOT "%found%" == "true" (
        echo No directories were found with the name of %dirname%
    )

teşekkür ederim ama ben kök ve alt klasörlerdeki tüm klasörü kaldırmak istiyorum
Albert222

0

Ne yaptığını yanlış anlıyorsun for /d.

for / d %% i in ( dir 1 dosya 1 dir 2 dosya 2 dir 3 dosya 3 ) deyimi yap

yapar

  • SET %%i=dir1
  • statement
  • SET %%i=dir2
  • statement
  • SET %%i=dir3
  • statement

Sorun şu ki, sadece nerede olduğunu söylüyorsun . Özyinelemeli bir dizin araması yapan kullanmak istiyorsunuz . Döngünüz gibi bir şey olmalıfor /d %%i in (dir1) do statementdir1
%directory%\%dirname%for /r

    for /r %directory% %%i in (.) do (
        if exist %%i\%dirname% (
            REM change the sentinel value
            set found=true

            echo Deleting the folder %%i\%dirname%
            REM Delete a folder, even if not empty, and don't prompt for confirmation
            RD  /s /q %%i\%dirname%
        )
    )

Özyinelemeli bir arama yapmak istediğinden emin değildim, sadece 1 düğüm aşağıda. Belirli bir dizinin altındaki (veya onun örnek kökünde) sadece 1 düğüm, bu kendi dizinini de içerir. Bunu sormaya çalıştım ama henüz bir cevap alamadım.
El8dN8

bildiğim şey, / r klasörleri kaldırırken / d iken / d dosyalarını kaldıracak
Albert222

Ne dediğini anlamıyorum. Yukarıdaki toplu iş dosyasının test, dizin ağacının tüm düzeylerinde adlandırılmış dizinleri silerek Windows 7'de çalıştığını biliyorum . Eğer orada da endişelendiği Are dosyalar adında test? Bunun için test etmedim.
Scott

İyi? Cevabımı denedin mi? Nasıl çalıştığı ile ilgili herhangi bir sorunuz var mı?
Scott
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.