Windows Batch File untuk menyalin dan menghitung nama file dan output ke file tunggal

0

Saya memiliki folder dengan banyak file yang berisi catatan.

Saya ingin skrip batch Windows yang akan menyalin semua 'nama file' ke file output tunggal bersama dengan jumlah catatan yang ada di semua file.

Siddharth
sumber
Apa itu "catatan"?
RJFalconer

Jawaban:

2

Referensi FIND Cari string teks dalam file & tampilkan semua baris di mana ditemukan.

find /v /c "" *.* > result.txt

Bagaimana itu bekerja

  • /v membalikkan pencarian (jadi ketika kita mencari apa-apa kita menemukan semua baris)
  • /c menghitung kecocokan
  • "" tidak ada yang cocok
  • *.* cari semua file
  • > result.txt redirect output

Keterbatasan

  • mengasumsikan batas akhir jendela normal garis \r\n
  • walaupun FIND dapat digunakan untuk memindai file besar, itu tidak akan mendeteksi string apa pun yang diposisikan lebih dari 1070 karakter di sepanjang satu baris (tanpa pengembalian carriage \r) Ini membuatnya terbatas digunakan dalam mencari jenis file biner atau XML.

Untuk menghapus baris tambahan -dan kosong kita dapat membungkus perintah di atas dalam sebuah forkonstruksi sebagai berikut:

for /f "usebackq tokens=2-3" %a in (`find /v /c "" *.*`) do echo %a %b >> result.txt
DavidPostill
sumber
+1 Saya tidak tahu tentang find / c / v "" Saya selalu selesai mencari / c / v "sdfsdf" Menarik bahwa find / c / v "" berfungsi .. Saya melihatnya berfungsi karena find tidak cocok string kosong bahkan hingga baris kosong. Saya melihat findstr tidak cocok dengan "" meskipun tentu saja dapat mencocokkan garis kosong dengan regex dari $ $
barlop
Ini berhasil untuk saya. Tapi saya mendapatkan di bawah ini sebagai output: ---------- PFIZ_EXT_SEAGRCLMHISD_20141013_1.TXT: 165428 ---------- PFIZ_EXT_SEBMODCHKIND_20141013_1.TXT: 0 ---------- PFIZ_EXT_SECNSLDND_20141013_1 .TXT: 13 ---------- PFIZ_EXT_SECNSMRD_20141013_1.TXT: 15788 ---------- PFIZ_EXT_SECNSNTD_20141013_1.TXT: 291825 ---------- PFIZ_EXT_SECPGNPRD_20141013_1.TX --------- PFIZ_EXT_SEFFLD_20141013_1.TXT: 219599 ---------- PFIZ_EXT_SESVYRSPD_20141013_1.TXT: 123284 Dapatkah Anda membantu saya menghapus baris baru di awal dan '-'
Siddharth
0

Terima kasih banyak atas tanggapan Anda. Menambahkan ke persyaratan asli saya, skenario adalah bahwa folder dibuat (dalam format YYYYMMDD) setiap hari di lokasi tertentu. Folder ini berisi beberapa file dengan / tanpa catatan yang ada di dalamnya.

Karena ini setiap hari, saya akan menggunakan file batch ini setiap hari. Dan setiap kali saya menjalankan file batch ini pada hari tertentu, maka ia harus memeriksa folder yang akan dibuat pada hari tertentu dan kemudian memberikan file output yang berisi nama file dan jumlah rekaman

Apakah ada cara untuk mendapatkan persyaratan ini?

Siddharth
sumber
Anda sekarang memiliki jawaban untuk pertanyaan Anda. Silakan ajukan pertanyaan baru dengan persyaratan baru dengan mengklik tombol Ajukan Pertanyaan. Sertakan tautan ke pertanyaan ini jika itu membantu menyediakan konteks.
DavidPostill
-1

Untuk hanya daftar nama file:

dir * /b /s > files.txt
RJFalconer
sumber
* tidak dibutuhkan di sini
Itu hanya menjawab bagian 'mudah' dari pertanyaan
Jan Doggen
Sebelum saya memperbaiki pertanyaan OPs itu saja yang dia minta
RJFalconer