Variabel untuk mendapatkan path absolut dalam skrip batch windows

9

Saya memiliki skrip berikut untuk mencantumkan semua file, secara rekursif dari direktori, memiliki .phtmlekstensi.

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

Ini mencantumkan hanya jalur relatif ke file. Script di atas berjalan dari lokasi perantara, jadi saya tidak mendapatkan path lengkap dalam @relpathvariabel.

Saya juga mendapatkan penawaran di baris hasil, yang ingin saya hapus.

Saya ingin mendapatkan path absolut ke file-file dengan beberapa perubahan kode mungkin, jika variabel global tersedia yang dapat digunakan dalam kode saya maka itu yang terbaik bagi saya, karena saya tidak banyak Windows batch scripter.

Vicky Dev
sumber

Jawaban:

3

Saya tidak mendapatkan path lengkap dalam @relpathvariabel.

juga saya mendapatkan penawaran di baris hasil, yang ingin saya hapus.

File batch berikut melakukan apa yang Anda inginkan:

@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

Catatan:

  • Penggunaan @path(Path lengkap file) alih-alih @relpath(Path relatif file).
  • Menggunakan substringekspresi variabel untuk menghapus tanda kutip ( :~1,-1menghapus karakter pertama dan terakhir dari string variabel).
  • Digunakan setlocal EnableDelayedExpansionagar variabel diperbarui dengan benar di forloop.

Bacaan lebih lanjut

  • Indeks AZ dari baris perintah CMD Windows - Referensi yang sangat baik untuk semua hal yang terkait dengan Windows CMD.
  • enabledelayedexpansion - Ekspansi yang tertunda akan menyebabkan variabel diperluas pada waktu eksekusi daripada pada waktu parse.
  • untuk / f - Loop perintah terhadap hasil perintah lain.
  • forfiles - Pilih file (atau set file) dan jalankan perintah pada setiap file. Pemrosesan batch.
  • variabel - Ekstrak bagian dari variabel (substring).
DavidPostill
sumber