Я написал простой пакетный скрипт для циклического просмотра файлов в определенном каталоге и добавления текста (имени клиента) к имени файла. Скрипт работает отлично; однако последний измененный файл в каталоге, по-видимому, изменяется дважды. Я попробовал два подхода к проблеме - использование pushd для каталога и перечисление полного пути в цикле for (код для каждого ниже).
В обоих подходах я получаю что-то вроде следующего (предположим, что третий файл является последним измененным файлом):
Оригинальные имена файлов:
SomeFile1.rtf
SomeFile2.rtf
SomeFile3.rtf
Переименованные имена файлов:
TextToPrepend_SomeFile1.rtf
TextToPrepend_SomeFile1.rtf
TextToPrepend_TextToPrepend_SomeFile1.rtf
Нет, это не опечатка в третьем файле. Он обрабатывается во второй раз, а TextToPrepend добавляется во второй раз. Я довольно плохо знаком с пакетными сценариями Windows и пытался исследовать эту проблему, но не могу найти причину, по которой он это делает. Любая помощь приветствуется.
Код:
pushd C:\Images\Data\
rem setlocal ENABLEDELAYEDEXPANSION
for %%X in (*.rtf) do (
ren "%%X" TEXTTOPREPEND_"%%X"
)
popd
- и -
rem setlocal ENABLEDELAYEDEXPANSION
for %%X in (C:\Images\Data\\*.rtf) do (
ren "%%X" TEXTTOPREPEND_"%%~nX".rtf
)
Если это поможет, пакетный сценарий выполняется на компьютере под управлением Windows Server 2008.