Програма в пакетному файлі зчитування старої версії нещодавно зміненого файлу (XP)


0

У мене є звичайний пакетний файл, запущений на XP. По-перше, програма A подає дані (рядок) до кінця файлу X.dll (на сервері). Потім програма B відкриває файл і шукає дані. Однак, іноді (зазвичай) програма B, очевидно, читає версію файлу раніше рядок додано, незважаючи на те, що він послідовно виконується після повернення програми A. \ t

Якщо ми називаємо dir X.dll між A і B, тоді B зчитує змінений файл правильно.

Той же пакетний файл, що працює на машині Windows 7 в одній мережі, працює бездоганно.

Чи є у когось якісь ідеї, що відбувається?


Питання також розміщено на сервері Fault - serverfault.com/questions/171332/…
ChrisF

Чи можливо, що файлова система затримує написання файлу на диск (продуктивність)?
MrWhite

Це те, що я хотів би знати .. і якщо так, то що робити з цим.
Joel in Gö

Відповіді:


1

Схоже, B виконується до завершення A. Одним із способів уникнути цього є використання START. Запустіть A за допомогою цієї команди: start / wait a . Пакетний файл не буде продовжуватись, доки не закінчиться виконання A.


Ідея в порядку, але не в цьому випадку; ми запускаємо програму без "запуску", що має той же ефект, що і "start / wait". Програма А також виводить "закінчений", коли він закінчується, і ми виводимо "B старт" перед початком B, так що ми можемо бачити, що A дійсно закінчується до початку B.
Joel in Gö

@Joel: Якщо кешування запису увімкнено на диску, що містить файл даних, це може бути фактором. Вимкнення кешування для запису призведе до погіршення продуктивності, але варто спробувати виключити його. Клацніть правою кнопкою миші диск в Провіднику, Властивості, Вкладка Обладнання, виберіть диск і натисніть Властивості. Щоб переконатися, що у вас є правильний диск, перейдіть на вкладку "Обсяги" та натисніть "Заповнювати". Перейдіть на вкладку Політики та вимкніть кешування записів. Можливо, вам доведеться перезавантажити комп'ютер. Повторно запустіть тест. Якщо це спрацює, ми шукаємо спосіб очищення кешу запису на льоту у пакетному файлі.
boot13

Це мережевий диск, і майже напевно є кешування записів. (Вікно властивостей не відображає Hardware). Згоден, це, мабуть, проблема; як сказано вище, виконання "dir filename" між викликами програми працює.
Joel in Gö
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.