Промежуток времени выполнения двух команд DOS (пакетный скрипт)
У меня есть пакетный скрипт, который сначала копирует файл из одного места в другую папку, а затем создает список имен файлов в текстовом файле:
Ниже Кода:
СКОПИРОВАТЬ \CDFS23001\\ИСТОЧНИК\ОРГ\*СЧЕТА*.XML-код \\CDFS23001\\источник\ТГТ\
dir /b \\CDFS23001\\SOURCE\TGT\*ACCOUNTS*.xml > \\CDFS23001\\SOURCE\TGT\List_Accounts.txt
Сначала команда copy копирует файл из папки ORG в папку TGT, а затем создается список имен файлов.
Иногда ... List_Accounts.txt не имеет никакого имени, несмотря на то, что файл учетных записей присутствует в расположении организации.
Возможно ли, что до того, как файл(ы) будет полностью скопирован в папку TGT (destination) командой COPY, будет выполнена вторая команда dir /b ?
Если это происходит, что я могу сделать, чтобы иметь некоторое время ожидания между этими двумя командами ?
Пожалуйста предложите
Что я уже пробовал:
Я думаю, что Timeout 60 создаст временной разрыв в 60 секунд, но в случае, если для копирования файлов потребуется больше времени, он тоже может потерпеть неудачу. Размер файлов никогда не фиксируется.
Richard Deeming
Какие-нибудь файлы скрыты? Попробуйте добавить /a
флаг вам в руки dir
вызов.
dir /a /b \\CDFS23001\\SOURCE\TGT\*ACCOUNTS*.xml > \\CDFS23001\\SOURCE\TGT\List_Accounts.txt
Aditya_ETL
Нет, скрытых файлов нет, я думаю, что когда размер файла составляет около 20 МБ, то перед тем, как команда copy полностью скопирует файл в пункт назначения, команда dir будет выполнена и geneartes пустой список файлов. Но я не уверен, что это действительно происходит.
Есть ли какой-нибудь способ убедиться, что сначала файл будет скопирован полностью, а затем должен выполняться только dir ?
Richard Deeming
Как сказал Дэйв, copy
команда не возвращается до завершения операции копирования.
Могут ли файлы быть нулевой длины? copy
не буду копировать их - вам нужно будет использовать xcopy
вместо.
копия | документы Майкрософт[^]
Если вы хотите попробовать сделать паузу между операциями, просто на случай, если есть что-то странное с оборудованием, то вы можете использовать то timeout
команда[^].