Переименуйте файлы после их объединения, чтобы избежать их повторного использования - PullRequest
0 голосов
/ 10 октября 2018

Я создал сообщение в Слияние текстовых файлов , и теперь мне нужно переименовать исходные файлы (как .txt.ok), чтобы избежать их повторного чтения.Программа будет выполняться каждый раз в определенное время для поиска новых файлов .txt для объединения конвертирования в csv, и я хочу прочитать файлы txt только один раз.

Я пытался с этим, но я не могу заставить его работать.Возможно, я не использую правильный синтаксис.

    for /r %%G in (*.txt) do (
    copy %%~pG\*INF*.txt + %%~pG\*RES*.txt %%~pG\"%date% %time:~0,2%-%time:~3,2%-%time:~6,2%".csv
    ren %%~pG\*.* >> %%~pG\*.txt.ok
    echo "%%G"
)
pause

Не могли бы вы мне помочь?Заранее большое спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

Ваш исходный код потерпит неудачу, если он не найдет файл INF в каталоге.Поэтому я не уверен, почему бы вам не использовать это в качестве маски файла для команды FOR.

Я предполагаю, что у вас есть один текстовый файл INF и один текстовый файл RESв каждом каталоге.Так почему бы не использовать некоторые вложенные команды FOR, чтобы убедиться, что они есть, прежде чем пытаться создать выходной файл.Если они оба есть, тогда произойдет копирование, и вы сможете легко переименовать каждый отдельный файл.

@ECHO off
for /R %%G in (*INF*.txt) do (
    pushd "%%~dpG"
    FOR %%H IN (*RES*.txt) DO (
        copy "%%~G" + "%%~H" "%date% %time:~0,2%-%time:~3,2%-%time:~6,2%.csv"
        ren "%%~G" "%%~nxG.ok"
        ren "%%~H" "%%~nxH.ok"
    )
    popd
)
...