Variabile per ottenere il percorso assoluto nello script batch di Windows


9

Ho il seguente script per elencare tutti i file, ricorsivamente da una directory, con .phtmlestensione.

@echo off
setlocal
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @relpath"') do echo %%G >> listoffiles.txt
endlocal
exit

Elenca solo il percorso relativo ai file. Lo script sopra è in esecuzione da una posizione intermedia, quindi non ottengo percorsi completi in @relpathvariabile.

Inoltre sto ricevendo le virgolette nelle righe dei risultati, che desidero rimuovere.

Voglio ottenere il percorso assoluto per quei file con alcune modifiche al codice possibili, se è disponibile una variabile globale che può essere utilizzata nel mio codice, allora è la cosa migliore per me, dato che non sono un grande programmatore di batch di Windows.

Risposte:


3

Non ottengo percorsi completi nella @relpathvariabile.

inoltre sto ricevendo virgolette nelle righe dei risultati, che desidero rimuovere.

Il seguente file batch fa quello che vuoi:

@echo off
setlocal enableDelayedExpansion
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @path"') do (
  set _name=%%G
  rem strip the quotes
  echo !_name:~1,-1! >> listoffiles.txt
  )
endlocal
exit

Appunti:

  • Utilizza @path(percorso completo del file) anziché @relpath(percorso relativo del file).
  • Utilizza substringun'espressione variabile per rimuovere le virgolette ( :~1,-1rimuove il primo e l'ultimo carattere dalla stringa variabile).
  • Utilizza in setlocal EnableDelayedExpansionmodo che le variabili vengano aggiornate correttamente nel forciclo.

Ulteriori letture

  • Un indice AZ della riga di comando CMD di Windows - Un riferimento eccellente per tutte le cose relative alla riga cmd di Windows.
  • enabledelayedexpansion - L'espansione ritardata provoca l'espansione delle variabili al momento dell'esecuzione piuttosto che al momento dell'analisi.
  • for / f - Comando loop contro i risultati di un altro comando.
  • forfile : seleziona un file (o un set di file) ed esegui un comando su ciascun file. Elaborazione in lotti.
  • variabili : estrae parte di una variabile (sottostringa).
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.