Domanda

Come si scorre su ogni 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.

È stato utile?

Soluzione

Utilizzo della riga di comando:

for /f %f in ('dir /b c:\') do echo %f

Utilizzo file batch:

for /f %%f in ('dir /b c:\') do echo %%f

Aggiorna : se la directory contiene file con spazio nei nomi, è necessario modificare il delimitatore utilizzato dal comando for / f . ad esempio, puoi usare il pipe 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, puoi usare usebackq sull'opzione per :

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 il carattere escape ( ^ ):

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f

Altri suggerimenti

In alternativa, utilizzare:

forfiles /s /m *.png /c "cmd /c echo @path"

Il comando forfiles è disponibile in Windows Vista e versioni successive.

Metodo più semplice:

Dalla riga di comando, utilizzare:

for %f in (*.*) do echo %f

Da un file batch (raddoppia il segno 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

Usa

for /r path %%var in (*.*) do some_command %%var

con:

  • percorso è il percorso iniziale.
  • %% var è un identificatore.
  • *. * essendo una maschera di file O il contenuto di una variabile.
  • some_command essendo il comando da eseguire con il percorso e var concatenati come parametri.

Un altro modo:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"

Avevo del malware che contrassegnava tutti i file in una directory come nascosto / sistema / sola lettura. Se qualcun altro si trova in questa situazione, cd nella directory ed esegui per / f " delims = | " % f in ('forfiles') fa attrib -s -h -r% f .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top