Come si esegue l'iterazione su ciascun file in una directory con un file .bat o .cmd?
Per semplicità, fornisci una risposta che fa eco al nome del file o al percorso del file.
Come si esegue l'iterazione su ciascun file in una directory con un file .bat o .cmd?
Per semplicità, fornisci una risposta che fa eco al nome del file o al percorso del file.
Risposte:
Utilizzo della riga di comando:
for /f %f in ('dir /b c:\') do echo %f
Utilizzo dei file batch:
for /f %%f in ('dir /b c:\') do echo %%f
Aggiornamento : se la directory contiene file con spazio nei nomi, è necessario modificare il delimitatore utilizzato dal for /f
comando. ad esempio, è possibile utilizzare il carattere pipe.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
Aggiornamento 2 : (veloce un anno e mezzo dopo la risposta originale :-)) Se il nome della directory stessa ha uno spazio nel nome, è possibile utilizzare l' usebackq
opzione su for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
E se è necessario utilizzare il reindirizzamento dell'output o il piping dei comandi, utilizzare escape char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
necessario dopo il for
? Secondo i documenti di aiuto, il /f
flag si apre e legge ogni file. È necessario ripetere l'eco o rinominare i file?
/f
dopo lo FOR
limita ai file. Allo stesso modo, si /d
limita alle directory (cartelle) e /r
indica che è ricorsivo.
'dir /b "c:\program files"'
dovrebbe essere`dir /b "c:\program files"`
In alternativa, utilizzare:
forfiles /s /m *.png /c "cmd /c echo @path"
Il comando forfiles è disponibile in Windows Vista e versioni successive.
Il metodo più semplice:
Dalla riga di comando, utilizzare:
for %f in (*.*) do echo %f
Da un file batch (raddoppia i segni di percentuale%):
for %%f in (*.*) do echo %%f
Da un file batch con la cartella specificata come primo parametro:
for %%f in (%1\*.*) do echo %%f
dir /B
dell'output con for
.
Uso
for /r path %%var in (*.*) do some_command %%var
con:
%%var was unexpected at this time.
puoi fare un esempio esatto? Ho provato un sacco di variazioni difor /r . %%var in (*.*) do echo %%var
Un altro modo:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
"%~nf"
sta per nome del file senza estensione, dove f
è il nome della variabile specificato in for
parte. Documenti: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…