У меня есть три файла в каталоге, которые появляются в другом процессе:
c:\result\results-a.txt
c:\result\results-b.txt
c:\result\results-c.txt
Каждый раз, когда они все появляются, я хотел бы скопировать их в другой каталог с возрастающим числовым суффиксом / префиксом, после того как файлы скопированы, их можно удалить. Каждый раз, когда запускается пакетный файл, он может начинаться с цифры 0 (ему не нужно сканировать целевой каталог и продолжать).
Ex. При первом появлении всех файлов целевой каталог может выглядеть следующим образом:
c:\archive\results-a.0000.txt
c:\archive\results-b.0000.txt
c:\archive\results-c.0000.txt
Когда они появятся во второй раз, целевой каталог будет содержать:
c:\archive\results-a.0000.txt
c:\archive\results-b.0000.txt
c:\archive\results-c.0000.txt
c:\archive\results-a.0001.txt
c:\archive\results-b.0001.txt
c:\archive\results-c.0001.txt
И так далее. Мне удобно соединять это в среде BASH, но мой клиент требует, чтобы это было сделано на машине с Windows NT (на самом деле, Windows 7). Может ли кто-нибудь начать меня?
[Правка - Ответ]
Благодаря Джои ниже, это то, что я закончил кодировать.
@echo off
setlocal enabledelayedexpansion
set Counter=0
:loop
call :test_file %1\results1.txt
call :test_file %1\results2.txt
call :test_file %1\results3.txt
timeout 2 /nobreak >nul
call :movefiles
timeout 2 /nobreak >nul
goto loop
:test_file
timeout 2 /nobreak >nul
if not exist %1 goto :test_file
goto :eof
:lz
set LZ=000%Counter%
set LZ=%LZ:~-4%
goto :eof
:movefiles
for %%f in (C:\test\*.txt) do (
call :lz
move "%%f" "c:\tmp\c-!LZ!-%%~nxf"
)
set /a Counter+=1
goto :eof
Очень хорошее введение в пакетное программирование. Спасибо.