Dichiarazione nidificata per CMD


3

Attualmente sto riscontrando problemi nel tentativo di eliminare alcuni file in uno script cmd

Ho il seguente:

for /d %%A in (C:\Users\*) do for /d %%B in (%%A\test\*) do echo %%B

Sebbene sia necessario eliminare i file di output, non elencarli

Ho provato:

for /d %%A in (C:\Users\*) do for /d %%B in (%%A\test\*) do del %%B

Ma non ha funzionato


1
"non ha funzionato" non è utile. Ti ha dato un messaggio di errore? Non ha eliminato i file giusti? Qual è stato l'output?
Mat

Scusa, grazie per la tua risposta, ho appena scoperto che è a causa degli spazi ..

Scoperto, ho appena aggiunto virgolette intorno a %% B, ad esempio per / d %% A in (C: \ Users *) fare per / d %% B in (%% A \ test *) do del "%% B"

2
dovresti postarlo come risposta - è ok per rispondere alle tue domande.
Mat

Risposte:


1

Aggiungi le virgolette %%Bad es. Per /d %%Ain ( C:\Users*) do for /d %%Bin %%A\test*dodel "%%B"


1
Meglio usare "%%~B"invece di solo "%%B", solo per essere al sicuro.
Ansgar Wiechers,

1

Oltre alla risposta di Max, puoi anche usare la parentesi per facilitare la lettura del file batch. Dovresti anche usare nomi di variabili minuscole.

@echo off
setlocal EnableDelayedExpansion  

for /d %%a in (C:\Users\*) do (
    rem echo "directory: %%a"
    for /f %%b in ("%%a\test\*") do (
        echo "%%b"
        del "%%b"
    )
)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.