Каталог зеркал и условное переименование - PullRequest
0 голосов
/ 08 октября 2019

У меня есть каталог активных текстовых файлов, которые используются машинами на производстве. Эти файлы контролируются редакцией с помощью добавленного тега (например, 000000 _R1 .pim). Эти машины могут принимать только файлы с 6-значным строковым именем (000000.pim). Обычно мы справляемся с этим, используя простую программу FTP и переименовывая их по отдельности во время передачи (к сожалению, FTP является единственным вариантом на этих старых машинах).

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

У меня нет ИТ-привилегий и нет возможности даже устанавливать программное обеспечение на мой компьютер.

Я написал командный файлсделать это для меня, но это займет около минуты, что довольно утомительно. Сценарий имеет тенденцию удалять, копировать и переименовывать около 500 файлов при каждом запуске (из 2700 файлов).

@echo off 
echo **************************************************** 
echo Please wait while the Manufacturing Directory is updated 
echo **************************************************** 
Set TransTXT="%USERPROFILE%\Desktop\pim_Transfer.txt"
Set LogTXT="%USERPROFILE%\Desktop\Transfer_Log.txt"
set REMOTEHD="M:\DMS_8055"
set FILELOCA="T:\Fagor\PRG"
REM *** MOVE ALL FILES TO MANUFACTURING NETWORK
robocopy %FILELOCA% %REMOTEHD% /LOG:%LOGTXT% /V /NP /NS /NDL /NJH /NJS /PURGE
echo ****************************************************
echo Copy Complete
echo ****************************************************
REM RENAME ALL FILES
echo Exchanged %DATE% %TIME% > %transtxt%
setlocal EnableDelayedExpansion
echo ****************************************************
ECHO RENAMING FILES TO MATCH MACHINE REQUIREMENTS:
echo ****************************************************
cd /d "%REMOTEHD%"
for %%x in ("%REMOTEHD%\*.pim") do (
    set curn=%%~nx
    set redn=!curn:~0,6!
    IF /I !curn! neq !redn! (
        echo "!curn!" >> %transtxt%
        IF EXIST "!redn!.pim" (
            echo "!curn! REPLACED !redn!" >> %transtxt%
            del "!redn!.pim"
            ren "%%x" "!curn:~0,6!.pim"
        ) ELSE (
            ren "%%x" "!curn:~0,6!.pim"
        )
    ) 
)
REM *** copy program to a temporary folder
echo ****************************************************
echo Rename Complete
echo ****************************************************
REM start notepad %LogTXT%
REM start notepad %transtxt%

Мне интересно, есть ли более элегантный способ справиться с этим - возможно, что-тоэто не требует большого количества операций чтения / записи при каждом запуске, но также должно быть достаточно устойчивым, чтобы не пропустить какие-либо изменения в исходном каталоге. Существует вероятность того, что очень старые файлы могут быть перемещены в мой исходный каталог из-за требований клиентов, поэтому использование временных меток не обязательно будет работать.

...