Program dalam file batch membaca versi lama dari file yang baru diubah (XP)

0

Saya memiliki file batch normal, berjalan di XP. Pertama, program A merekomendasikan data (string) ke akhir file X.dll(di server). Kemudian program B membuka file, dan mencari data. Namun, kadang-kadang (biasanya), program B jelas membaca versi file sebelum string telah ditambahkan, terlepas dari kenyataan bahwa itu sedang dilakukan secara berurutan setelah program A telah kembali.

Jika kita memanggil dir X.dllantara A dan B, maka B membaca file yang diubah dengan benar.

Kumpulan file yang sama, berjalan pada mesin Windows 7 di jaringan yang sama, berfungsi dengan sempurna.

Adakah yang tahu apa yang sedang terjadi?

Joel di Gö
sumber
Pertanyaan juga diposting di Server Fault - serverfault.com/questions/171332/…
ChrisF
Apakah mungkin bahwa sistem file menunda penulisan file ke disk (kinerja)?
MrWhite
Itulah yang ingin saya ketahui .. dan jika demikian, apa yang harus saya lakukan.
Joel in Go

Jawaban:

1

Sepertinya B sedang berjalan sebelum A selesai. Salah satu cara untuk menghindari ini adalah dengan menggunakan MULAI. Jalankan A dengan perintah ini: start / wait a . File batch tidak akan berlanjut sampai A selesai berjalan.

boot13
sumber
Ide itu oke, tapi tidak dalam kasus ini; kami menjalankan program tanpa "mulai", yang memiliki efek yang sama dengan "mulai / tunggu". Program A juga menampilkan "selesai" ketika selesai, dan kami menampilkan "B mulai" sebelum memulai B, sehingga kita dapat melihat bahwa A benar-benar selesai sebelum B dimulai.
Joel in Go
@ Joel: Jika cache tulis diaktifkan pada drive yang berisi file data, itu mungkin menjadi faktor. Menonaktifkan caching tulis akan merusak kinerja, tetapi mungkin ada baiknya mencoba mengesampingkannya. Klik kanan drive di Explorer, Properties, tab Hardware, pilih drive dan klik Properties. Untuk memastikan Anda memiliki drive yang tepat, buka tab Volume dan klik Populate. Buka tab Kebijakan dan nonaktifkan cache tulis. Anda mungkin harus reboot. Jalankan kembali tes Anda. Jika berhasil, kami sedang mencari cara untuk menghapus cache tulis dengan cepat dari dalam file batch.
boot13
Ini adalah drive jaringan, dan hampir pasti telah menulis caching. (Jendela properti tidak menampilkan Hardware). Saya setuju, mungkin itulah masalahnya; seperti yang dikatakan di atas, melakukan "dir nama file" antara panggilan program bekerja.
Joel in Go