Bagikan melalui


untuk

Menjalankan perintah yang ditentukan untuk setiap file, dalam sekumpulan file.

Sintaksis

for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]

Parameter-parameternya

Pengaturan Deskripsi
{%% \| %}<variable> Dibutuhkan. Mewakili parameter yang dapat diganti. Gunakan tanda persen tunggal (%) untuk melakukan perintah untuk di prompt perintah. Gunakan tanda persen ganda (%%) untuk melakukan perintah untuk dalam file batch. Variabel peka huruf besar/kecil, dan harus diwakili dengan nilai alfabet seperti %a, %b, atau %c.
Aku akan menemuinya.<set> Dibutuhkan. Menentukan satu atau beberapa file, direktori, atau string teks, atau rentang nilai untuk menjalankan perintah. Tanda kurung diperlukan.
<command> Dibutuhkan. Menentukan perintah yang ingin Anda lakukan pada setiap file, direktori, atau string teks, atau pada rentang nilai yang disertakan dalam set.
<commandlineoptions> Menentukan opsi baris perintah apa pun yang ingin Anda gunakan dengan perintah yang ditentukan.
/? Menampilkan bantuan pada prompt perintah.

Komentar

  • Anda dapat menggunakan perintah ini dalam file batch atau langsung dari prompt perintah.

  • Atribut berikut berlaku untuk perintah :

    • Perintah ini menggantikan % variable atau %% variable dengan setiap string teks dalam set yang ditentukan hingga perintah yang ditentukan memproses semua file.

    • Nama variabel peka huruf besar/kecil, global, dan tidak lebih dari 52 dapat aktif sekaligus.

    • Untuk menghindari kebingungan dengan parameter batch, %0 melalui %9, Anda dapat menggunakan karakter apa pun untuk variabel kecuali angka 0 hingga 9. Untuk file batch sederhana, satu karakter seperti %%f akan berfungsi.

    • Anda dapat menggunakan beberapa nilai untuk variabel dalam file batch kompleks untuk membedakan variabel yang dapat diganti yang berbeda.

  • Parameter yang ditetapkan dapat mewakili satu grup file atau beberapa grup file. Anda dapat menggunakan karakter kartubebas (* dan ?) untuk menentukan set file. Berikut ini adalah set file yang valid:

    (*.doc)
    (*.doc *.txt *.me)
    (jan*.doc jan*.rpt feb*.doc feb*.rpt)
    (ar??1991.* ap??1991.*)
    
  • Saat Anda menggunakan perintah ini, nilai pertama dalam set menggantikan % variable atau %% variable, lalu perintah yang ditentukan memproses nilai ini. Ini berlanjut hingga semua file (atau grup file) yang sesuai dengan nilai yang ditetapkan diproses.

  • Di dan bukan parameter, tetapi Anda harus menggunakannya dengan perintah ini. Jika Anda menghilangkan salah satu kata kunci ini, pesan kesalahan akan muncul.

  • Jika ekstensi perintah diaktifkan (yang merupakan default), formulir tambahan berikut untuk didukung:

    • Direktori saja: Jika set berisi karakter kartubebas (* atau ?), perintah yang ditentukan dijalankan untuk setiap direktori (bukan sekumpulan file dalam direktori tertentu) yang cocok dengan yang ditetapkan. Sintaksnya adalah:

      for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
      
    • Rekursif: Berjalan di pohon direktori yang berakar pada drive:path dan menjalankan untuk pernyataan di setiap direktori pohon. Jika tidak ada direktori yang ditentukan setelah /r, direktori saat ini digunakan sebagai direktori akar. Jika diatur hanyalah satu periode (.), itu hanya menghitung pohon direktori. Sintaksnya adalah:

      for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
      
    • Iterasi rentang nilai: Gunakan variabel berulang untuk mengatur nilai awal (mulai#) lalu langkahi rentang nilai yang ditetapkan hingga nilai melebihi nilai akhir yang ditetapkan (akhir#). /l menjalankan iteratif dengan membandingkan start# dengan end#. Jika start# kurang dari akhir# perintah dijalankan. Ketika variabel iteratif melebihi akhir#, shell perintah keluar dari perulangan. Anda juga dapat menggunakan langkah negatif# untuk menelusuri rentang dalam nilai yang menurun. Misalnya, (1,1,5) menghasilkan urutan 1 2 3 4 5 dan (5,-1,1) menghasilkan urutan 5 4 3 2 1. Sintaksnya adalah:

      for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]
      
    • Iterasi dan penguraian file: Gunakan penguraian file untuk memproses output perintah, string, dan konten file. Gunakan variabel berulang untuk menentukan konten atau string yang ingin Anda periksa, dan gunakan berbagai opsi parsingkeywords untuk memodifikasi penguraian lebih lanjut. Gunakan opsi token parsingkeywords untuk menentukan token mana yang harus diteruskan sebagai variabel berulang. Ketika digunakan tanpa opsi token, /f hanya akan memeriksa token pertama.

      Penguraian file terdiri dari membaca output, string, atau konten file, lalu memecahnya menjadi baris teks individual dan mengurai setiap baris menjadi nol atau lebih token. untuk perulangan kemudian dipanggil dengan nilai variabel iteratif yang diatur ke token. Secara default, /f meneruskan token pertama yang dipisahkan kosong dari setiap baris setiap file. Baris kosong dilewati.

      Sintaksnya adalah:

      for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlineoptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlineoptions>]
      

      Argumen set menentukan satu atau beberapa nama file. Setiap file dibuka, dibaca, dan diproses sebelum pindah ke file berikutnya dalam set. Untuk mengambil alih perilaku penguraian default, tentukan parsingkeywords. Ini adalah string yang dikutip yang berisi satu atau beberapa kata kunci untuk menentukan opsi penguraian yang berbeda.

      Jika Anda menggunakan opsi usebackq , gunakan salah satu sintaks berikut:

      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<literalstring>') do <command> [<commandlineoptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlineoptions>]
      

      Tabel berikut mencantumkan kata kunci penguraian yang bisa Anda gunakan untuk parsingkeywords.

      Kata kunci Deskripsi
      eol=<c> Menentukan akhir karakter garis (hanya satu karakter).
      lewati =<n> Menentukan jumlah baris yang akan dilewati di awal file.
      delims=<xxx> Menentukan set pemisah. Ini menggantikan kumpulan ruang dan tab pemisah default.
      token=<x,y,m–n> Menentukan token mana dari setiap baris yang akan diteruskan ke perulangan untuk setiap perulangan. Akibatnya, nama variabel tambahan dialokasikan. m-n menentukan rentang, dari mth hingga token nth. Jika karakter terakhir dalam token= string adalah tanda bintang (*), variabel tambahan dialokasikan, dan menerima teks yang tersisa pada baris setelah token terakhir yang diurai.
      usebackq Menentukan untuk menjalankan string yang dikutip kembali sebagai perintah, gunakan string yang dikutip tunggal sebagai string literal, atau, untuk nama file panjang yang berisi spasi, izinkan nama file di <set>, untuk masing-masing diapit dalam tanda kutip ganda.
    • Penggantian variabel: Tabel berikut mencantumkan sintaks opsional (untuk variabel I apa pun):

      Variabel dengan pengubah Deskripsi
      %~I %I Memperluas yang menghapus tanda kutip di sekitarnya.
      %~fI %I Memperluas ke nama jalur yang sepenuhnya memenuhi syarat.
      %~dI %I Perluas ke huruf kandar saja.
      %~pI %I Perluas ke jalur saja.
      %~nI %I Perluas ke nama file saja.
      %~xI %I Perluas ke ekstensi nama file saja.
      %~sI Memperluas jalur untuk memuat nama pendek saja.
      %~aI %I Memperluas ke atribut file file.
      %~tI %I Memperluas ke tanggal dan waktu file.
      %~zI %I Memperluas ke ukuran file.
      %~$PATH:I Mencari direktori yang tercantum dalam variabel lingkungan PATH dan memperluas %I ke nama direktori pertama yang sepenuhnya memenuhi syarat yang ditemukan. Jika nama variabel lingkungan tidak ditentukan atau file tidak ditemukan oleh pencarian, pengubah ini akan meluas ke string kosong.

      Tabel berikut ini mencantumkan kombinasi pengubah yang bisa Anda gunakan untuk mendapatkan hasil gabungan.

      Variabel dengan pengubah gabungan Deskripsi
      %~dpI %I Perluas ke huruf kandar dan jalur saja.
      %~nxI %I Perluas ke nama file dan ekstensi saja.
      %~fsI %I Memperluas ke nama jalur lengkap dengan nama pendek saja.
      %~dp$PATH:I Mencari direktori yang tercantum dalam variabel lingkungan PATH untuk %I dan memperluas ke huruf drive dan jalur yang pertama ditemukan.
      %~ftzaI %I Memperluas ke baris output yang seperti dir.

      Dalam contoh di atas, Anda dapat mengganti %I dan PATH dengan nilai valid lainnya. Valid untuk nama variabel mengakhiri %~ sintaks.

      Dengan menggunakan nama variabel huruf besar seperti %I, Anda dapat membuat kode Anda lebih mudah dibaca dan menghindari kebingungan dengan pengubah, yang tidak peka huruf besar/kecil.

  • Mengurai string: Anda dapat menggunakan for /f logika penguraian pada string langsung dengan membungkus <literalstring> baik dalam: tanda kutip ganda (tanpa usebackq) atau dalam tanda kutip tunggal (dengan usebackq) --misalnya, (MyString) atau ('MyString'). <literalstring> diperlakukan sebagai satu baris input dari file. Saat mengurai <literalstring> dalam tanda kutip ganda, simbol perintah seperti (\ & | > < ^) diperlakukan sebagai karakter biasa.

  • Output penguraian: Anda dapat menggunakan for /f perintah untuk mengurai output perintah dengan menempatkan back-quoted <command> antara tanda kurung. Ini diperlakukan sebagai baris perintah, yang diteruskan ke anak Cmd.exe. Output diambil ke dalam memori dan diurai seolah-olah itu adalah file.

Contoh

Untuk digunakan dalam file batch, gunakan sintaks berikut:

for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]

Untuk menampilkan konten semua file di direktori saat ini yang memiliki ekstensi .doc atau .txt dengan menggunakan variabel yang dapat diganti %f, ketik:

for %f in (*.doc *.txt) do type %f

Dalam contoh sebelumnya, setiap file yang memiliki ekstensi .doc atau .txt di direktori saat ini digantikan untuk variabel %f hingga konten setiap file ditampilkan. Untuk menggunakan perintah ini dalam file batch, ganti setiap kemunculan %f dengan %%f. Jika tidak, variabel diabaikan dan pesan kesalahan ditampilkan.

Untuk mengurai file, abaikan baris yang dikomentari, ketik:

for /f eol=; tokens=2,3* delims=, %i in (myfile.txt) do @echo %i %j %k

Perintah ini mengurai setiap baris dalam myfile.txt. Ini mengabaikan garis yang dimulai dengan titik koma dan meneruskan token kedua dan ketiga dari setiap baris ke untuk isi (token dibatasi oleh koma atau spasi). Isi untuk pernyataan mereferensikan %i untuk mendapatkan token kedua, %j untuk mendapatkan token ketiga, dan %k untuk mendapatkan semua token yang tersisa. Jika nama file yang Anda berikan berisi spasi, gunakan tanda kutip di sekitar teks (misalnya, Nama File). Untuk menggunakan tanda kutip, Anda harus menggunakan usebackq. Jika tidak, tanda kutip ditafsirkan sebagai menentukan string harfiah untuk diurai.

%i secara eksplisit dinyatakan dalam untuk pernyataan. %j dan %k secara implisit dideklarasikan dengan menggunakan tokens=. Anda dapat menggunakan token= untuk menentukan hingga 26 token, jika tidak menyebabkan upaya untuk mendeklarasikan variabel yang lebih tinggi dari huruf z atau Z.

Untuk mengurai output perintah dengan menempatkan set di antara tanda kurung, ketik:

for /f "usebackq delims==" %i in (`set`) do @echo %i

Untuk melakukan perulangan rekursif semua file dalam direktori, termasuk subdirektori dan menggemakan jalur lengkapnya, ketika terakhir dimodifikasi, dan ukuran filenya, ketik:

for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA